Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
6ca716f
Output a more informative error after SIGKILL
DonFreed Aug 23, 2025
f54e662
longread - make hificnv optional
DonFreed Sep 4, 2025
f9c8811
Update `vcf_mod.py` to skip annotations with incorrect lengths
DonFreed Oct 9, 2025
39c8e54
adjust alignment settings
DonFreed Nov 20, 2025
e2148ab
Use `exec` instead of the shell to run commands
DonFreed Nov 25, 2025
5e70ff4
Pass environment variables directly to bwa in hybrid stage1
DonFreed Nov 25, 2025
474c1b4
Correct pipes in hybrid stage1
DonFreed Nov 25, 2025
51c11dd
Merge pull request #16 from Sentieon/exec_commands
DonFreed Nov 25, 2025
72bf261
With `--rgsm`, replace readgroups during SV and CNV calling
DonFreed Nov 27, 2025
fdc2556
Updates to vcf_mod.py
DonFreed Nov 28, 2025
39d12d4
Merge pull request #17 from Sentieon/lr-RPA
DonFreed Nov 28, 2025
b455db0
Update pipeline `str()` representation
DonFreed Nov 29, 2025
614db00
Formatting
DonFreed Nov 29, 2025
70e3fe6
Add `-L` to minimap2 commands
DonFreed Dec 5, 2025
2a99d1e
Sentieon accelerated pangenome implementation
DonFreed Dec 16, 2025
9221938
Bug fixes and additional input validation
DonFreed Dec 17, 2025
58b1df1
Require bcftools >=v1.22
DonFreed Dec 22, 2025
cfb2d35
Update the version of the packaging dependency
DonFreed Dec 22, 2025
010e72f
Update lock file
DonFreed Dec 22, 2025
c8456c8
Add additional functionality to the sentieon-pangenome pipeline
DonFreed Dec 23, 2025
2568765
Add an argument to skip CNV calling
DonFreed Dec 24, 2025
da4c752
Update the required bcftools version
DonFreed Dec 28, 2025
485d3a8
Validation improvements
DonFreed Dec 29, 2025
b505083
Update validation
DonFreed Dec 29, 2025
7be8bf3
Remove optional components from the `sentieon-pangenome` pipeline
DonFreed Jan 4, 2026
6a726f6
Remove the cnv.model from bundle validation
DonFreed Jan 4, 2026
dd10a38
Add a `--pcr_free` argument in the pangenome pipeline
DonFreed Jan 4, 2026
6f1618c
Check that the HPRC v2 pangenome is used
DonFreed Jan 5, 2026
5a93b2b
Check the pangenome name in `bundle_info.json`
DonFreed Jan 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,18 @@ jobs:
strategy:
fail-fast: true
matrix:
python-version: ["3.8", "3.13"]
poetry-version: ["1.5.1"]
python-version: ["3.9", "3.13"]
os: [ubuntu-22.04] #, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- uses: actions/checkout@v5
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Run image
uses: abatilo/actions-poetry@v2
with:
poetry-version: ${{ matrix.poetry-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade poetry
- name: Test build
run: |
poetry config virtualenvs.in-project true
Expand All @@ -32,22 +31,23 @@ jobs:
fail-fast: true
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- uses: actions/checkout@v5
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Run image
uses: abatilo/actions-poetry@v2
with:
poetry-version: "1.5.1"
python-version: "3.13"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade poetry
poetry install --with dev
- name: Install the project dependencies
run: poetry install
- name: Run black formatter
run: poetry run black --check --exclude '__pycache__|scripts|sentieon_cli/archive.py' --line-length 79 sentieon_cli
- name: Run mypy
run: poetry run mypy sentieon_cli
run: poetry run mypy sentieon_cli --exclude scripts
- name: Run flake8
run: poetry run flake8 . --extend-ignore E231,E221, --exclude .github/scripts/license_message.py,sentieon_cli/scripts/gvcf_combine.py,sentieon_cli/scripts/vcf_mod.py,sentieon_cli/scripts/hybrid_anno.py,sentieon_cli/scripts/hybrid_select.py,sentieon_cli/archive.py,tests # false+ from python 3.12
run: poetry run flake8 . --extend-ignore E231,E221, --exclude .github/scripts/license_message.py,sentieon_cli/scripts/gvcf_combine.py,sentieon_cli/scripts/vcf_mod.py,sentieon_cli/scripts/hybrid_anno.py,sentieon_cli/scripts/hybrid_select.py,sentieon_cli/archive.py,sentieon_cli/scripts/trimalt.py,playground,tests # false+ from python 3.12
- name: Run the automated tests
run: poetry run pytest -v
- name: Run doct tests
Expand Down
112 changes: 77 additions & 35 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,19 @@ jobs:
fail-fast: true
max-parallel: 1
matrix:
python-version: ["3.8", "3.13"]
poetry-version: ["1.5.1"]
sentieon-version: ["202503"]
python-version: ["3.9", "3.13"]
sentieon-version: ["202503.01"]
os: [ubuntu-22.04] #, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- uses: actions/checkout@v5
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Run image
uses: abatilo/actions-poetry@v2
with:
poetry-version: ${{ matrix.poetry-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade poetry
- name: Install the project dependencies
run: |
poetry config virtualenvs.in-project true
Expand All @@ -42,9 +41,16 @@ jobs:
pip install multiqc
- name: Install sentieon
run: |
curl -L https://s3.amazonaws.com/sentieon-release/software/sentieon-genomics-$SENTIEON_VERSION.tar.gz | tar -zxf -
url="https://s3.amazonaws.com/sentieon-release/software/sentieon-genomics-$SENTIEON_VERSION.tar.gz"
bin_dir=$(pwd)/sentieon-genomics-$SENTIEON_VERSION/bin
machine_arch=$(uname -m)
if [[ "$machine_arch" == "arm64" || "$machine_arch" == "aarch64" || "$machine_arch" == "armv7l" ]]; then
url="https://s3.amazonaws.com/sentieon-release/software/arm-sentieon-genomics-$SENTIEON_VERSION.tar.gz"
bin_dir=$(pwd)/arm-sentieon-genomics-$SENTIEON_VERSION/bin
fi
curl -L "$url" | tar -zxf -
echo "SENTIEON_VERSION=$SENTIEON_VERSION" >> $GITHUB_ENV
echo "PATH=$(pwd)/sentieon-genomics-$SENTIEON_VERSION/bin:$PATH" >> $GITHUB_ENV
echo "PATH=$bin_dir:$PATH" >> $GITHUB_ENV
env:
SENTIEON_VERSION: ${{ matrix.sentieon-version }}
- name: Download short-read model
Expand Down Expand Up @@ -91,28 +97,30 @@ jobs:
fail-fast: true
max-parallel: 1
matrix:
python-version: ["3.8", "3.13"]
poetry-version: ["1.5.1"]
sentieon-version: ["202503"]
python-version: ["3.9", "3.13"]
sentieon-version: ["202503.01"]
os: [ubuntu-22.04] #, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- uses: actions/checkout@v5
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Run image
uses: abatilo/actions-poetry@v2
with:
poetry-version: ${{ matrix.poetry-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade poetry
- name: Install the project dependencies
run: |
poetry config virtualenvs.in-project true
poetry install
- name: Install bcftools
run: |
sudo apt-get update
sudo apt-get install -y bcftools
sudo apt-get install libcurl4-gnutls-dev
curl -L https://github.com/samtools/bcftools/releases/download/1.22/bcftools-1.22.tar.bz2 | tar -jxf -
cd bcftools-1.22
./configure && sudo make install
- name: Install samtools
run: |
curl -L https://github.com/samtools/samtools/releases/download/1.19.2/samtools-1.19.2.tar.bz2 | tar -jxf -
Expand All @@ -128,9 +136,16 @@ jobs:
sudo chmod ugo+x /usr/local/bin/mosdepth
- name: Install sentieon
run: |
curl -L https://s3.amazonaws.com/sentieon-release/software/sentieon-genomics-$SENTIEON_VERSION.tar.gz | tar -zxf -
url="https://s3.amazonaws.com/sentieon-release/software/sentieon-genomics-$SENTIEON_VERSION.tar.gz"
bin_dir=$(pwd)/sentieon-genomics-$SENTIEON_VERSION/bin
machine_arch=$(uname -m)
if [[ "$machine_arch" == "arm64" || "$machine_arch" == "aarch64" || "$machine_arch" == "armv7l" ]]; then
url="https://s3.amazonaws.com/sentieon-release/software/arm-sentieon-genomics-$SENTIEON_VERSION.tar.gz"
bin_dir=$(pwd)/arm-sentieon-genomics-$SENTIEON_VERSION/bin
fi
curl -L "$url" | tar -zxf -
echo "SENTIEON_VERSION=$SENTIEON_VERSION" >> $GITHUB_ENV
echo "PATH=$(pwd)/sentieon-genomics-$SENTIEON_VERSION/bin:$PATH" >> $GITHUB_ENV
echo "PATH=$bin_dir:$PATH" >> $GITHUB_ENV
env:
SENTIEON_VERSION: ${{ matrix.sentieon-version }}
- name: Download long-read model
Expand Down Expand Up @@ -204,28 +219,30 @@ jobs:
fail-fast: true
max-parallel: 1
matrix:
python-version: ["3.8", "3.13"]
poetry-version: ["1.5.1"]
sentieon-version: ["202503.01.rc1"]
python-version: ["3.9", "3.13"]
sentieon-version: ["202503.01"]
os: [ubuntu-22.04] #, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- uses: actions/checkout@v5
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Run image
uses: abatilo/actions-poetry@v2
with:
poetry-version: ${{ matrix.poetry-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade poetry
- name: Install the project dependencies
run: |
poetry config virtualenvs.in-project true
poetry install
- name: Install bcftools
run: |
sudo apt-get update
sudo apt-get install -y bcftools
sudo apt-get install libcurl4-gnutls-dev
curl -L https://github.com/samtools/bcftools/releases/download/1.22/bcftools-1.22.tar.bz2 | tar -jxf -
cd bcftools-1.22
./configure && sudo make install
- name: Install samtools
run: |
curl -L https://github.com/samtools/samtools/releases/download/1.19.2/samtools-1.19.2.tar.bz2 | tar -jxf -
Expand All @@ -244,9 +261,16 @@ jobs:
pip install multiqc
- name: Install sentieon
run: |
curl -L https://s3.amazonaws.com/sentieon-release/software/sentieon-genomics-$SENTIEON_VERSION.tar.gz | tar -zxf -
url="https://s3.amazonaws.com/sentieon-release/software/sentieon-genomics-$SENTIEON_VERSION.tar.gz"
bin_dir=$(pwd)/sentieon-genomics-$SENTIEON_VERSION/bin
machine_arch=$(uname -m)
if [[ "$machine_arch" == "arm64" || "$machine_arch" == "aarch64" || "$machine_arch" == "armv7l" ]]; then
url="https://s3.amazonaws.com/sentieon-release/software/arm-sentieon-genomics-$SENTIEON_VERSION.tar.gz"
bin_dir=$(pwd)/arm-sentieon-genomics-$SENTIEON_VERSION/bin
fi
curl -L "$url" | tar -zxf -
echo "SENTIEON_VERSION=$SENTIEON_VERSION" >> $GITHUB_ENV
echo "PATH=$(pwd)/sentieon-genomics-$SENTIEON_VERSION/bin:$PATH" >> $GITHUB_ENV
echo "PATH=$bin_dir:$PATH" >> $GITHUB_ENV
env:
SENTIEON_VERSION: ${{ matrix.sentieon-version }}
- name: Download hybrid model
Expand Down Expand Up @@ -294,3 +318,21 @@ jobs:
if [ ! -f "output_hybrid2.vcf.gz" ]; then
exit 1
fi
- name: Smoke test - readgroups
run: |
. .venv/bin/activate
samtools addreplacerg -m overwrite_all \
-o "tests/smoke/illumina_2.bam" \
-r '@RG\tID:HG002-2\tSM:HG003\tPL:ILLUMINA' -O BAM \
--reference "tests/smoke/r ef.fa" "tests/smoke/illumina.cram"
samtools index -b "tests/smoke/illumina_2.bam"
sentieon-cli -v dnascope-hybrid -t 1 -r "tests/smoke/r ef.fa" \
--rgsm "HG001" \
--sr_aln "tests/smoke/illumina.cram" "tests/smoke/illumina_2.bam" \
--lr_aln "tests/smoke/sam ple.cram" \
-m "DNAscope hybrid IlmnPB1.1.bundle" \
--sr_duplicate_marking none \
"output_hybrid3.vcf.gz"
if [ ! -f "output_hybrid3.vcf.gz" ]; then
exit 1
fi
10 changes: 5 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.12"
- name: Run image
uses: abatilo/actions-poetry@v2
with:
poetry-version: "1.5.1"
python-version: "3.13"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade poetry
- name: Test build
run: |
poetry config virtualenvs.in-project true
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ A command-line interface for the Sentieon software

Download the latest tar.gz file from the GitHub release page, https://github.com/sentieon/sentieon-cli/releases/ and install the package with pip:
```sh
curl -LO https://github.com/Sentieon/sentieon-cli/releases/download/v1.4.0/sentieon_cli-1.4.0.tar.gz
pip install sentieon_cli-1.4.0.tar.gz
curl -LO https://github.com/Sentieon/sentieon-cli/releases/download/v1.5.0/sentieon_cli-1.5.0.tar.gz
pip install sentieon_cli-1.5.0.tar.gz
```

## Installation with Poetry
Expand Down
2 changes: 1 addition & 1 deletion docs/dnascope-hybrid.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Sentieon DNAscope Hybrid is a pipeline for germline variant calling using combin
The pipeline supports input data in the following formats; both short-read and long-read input are required:
* Unaligned short-read data in gzipped FASTQ format.
* Aligned short-reads in BAM or CRAM format.
* Unaliged long-read data in the uBAM or uCRAM format.
* Unaligned long-read data in the uBAM or uCRAM format.
* Aligned long-read data in BAM or CRAM format.

By default, the pipeline will generate the following output files:
Expand Down
2 changes: 1 addition & 1 deletion docs/dnascope.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ sentieon-cli dnascope [-h] \
```

With uBAM or uCRAM input, the DNAscope pipeline requires the following new arguments:
- `-i SAMPLE_INPUT`: the input input sample file in uBAM or uCRAM format. One or more files can be supplied by passing multiple files after the `-i` argument.
- `-i SAMPLE_INPUT`: the input sample file in uBAM or uCRAM format. One or more files can be supplied by passing multiple files after the `-i` argument.
- `--align`: directs the pipeline to align the input reads.

The DNAscope pipeline accepts the following new optional arguments:
Expand Down
Loading