Skip to content

Commit 98f4e0b

Browse files
committed
Merge branch 'development'
2 parents 421c22d + f88987b commit 98f4e0b

71 files changed

Lines changed: 813 additions & 3034 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/advanced_analysis.rst

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -491,24 +491,44 @@ frequency higher than the stated percentage in any database defined in the :ref:
491491
pathogenicityFilter:
492492
....................
493493
Will apply the pathogenicity scores defined in the :ref:`pathogenicitySources<pathogenicitysources>` section to variants.
494-
If the ``keepNonPathogenic`` field is set to ``true`` then all variants will be kept. Setting this to ``false`` will set
495-
the filter to fail non-missense variants with pathogenicity scores lower than a score cutoff of 0.5.
496-
497494
This filter is meant to be quite permissive and we recommend it be set to ``true`` unless running genomiser
498-
(i.e. including REMM/CADD/SPLICE_AI and all non-coding regions), in which case setting ``keepNonPathogenic: false`` is
499-
recommended as Exomiser will use a stringent cutoff to remove variants with a `CADD <https://cadd.bihealth.org/info>`_
500-
raw score <= 15.0 a `REMM score <https://doi.org/10.1093/gigascience/giad024>`_ <= 0.914
501-
or a `SpliceAI <https://doi.org/10.1016/j.cell.2018.12.015>`_ <= 0.1 These thresholds were chosen based on the
502-
recommendations of the authors of the scores.
495+
(i.e. including REMM/CADD/SPLICE_AI and all non-coding regions).
496+
497+
If ``keepNonPathogenic`` is set to ``true``, all variants will pass regardless of their pathogenicity scores.
498+
499+
If ``keepNonPathogenic`` is set to ``false``, the ``target`` field controls which variants are subject to filtering:
500+
501+
- ``target: ALL`` — both coding and non-coding variants are filtered. Coding variants are failed if they have a
502+
pathogenicity score < 0.5, non-coding variants are filtered using the thresholds described below.
503+
- ``target: NON_CODING`` (recommended for WGS) — only non-coding variants are filtered using the thresholds below;
504+
all coding variants pass. For WES samples this is equivalent to ``keepNonPathogenic: true``, since non-coding
505+
variants are absent.
506+
507+
Non-coding variants (when subject to filtering) must exceed at least one of the following thresholds to pass:
508+
509+
- `CADD <https://cadd.bihealth.org/info>`_ scaled score (Exomiser raw score) >= 15.0
510+
- `SpliceAI <https://doi.org/10.1016/j.cell.2018.12.015>`_ score > 0.1
511+
- `REMM <https://doi.org/10.1093/gigascience/giad024>`_ score > 0.914
512+
513+
These thresholds were chosen based on the recommendations of the respective score authors. Scores are optional; a
514+
variant only needs to exceed one present score to pass.
515+
516+
We recommend ``keepNonPathogenic: true`` for standard exome analysis. For whole-genome analysis including non-coding
517+
regions (e.g. using REMM/CADD/SpliceAI), use ``keepNonPathogenic: false`` with ``target: NON_CODING``.
503518

504519
.. code-block:: yaml
505520
521+
# Either (recommended for WES/Exomiser)
506522
pathogenicityFilter: {keepNonPathogenic: true}
523+
# Or (recommended for WGS/Genomiser)
524+
pathogenicityFilter: {keepNonPathogenic: false, target: NON_CODING}
525+
# Or (most stringent may result in reduced recall due to loss of false negatives)
526+
pathogenicityFilter: {keepNonPathogenic: false, target: ALL}
507527
508528
509529
.. important::
510530

511-
Not defining this filter will result in all variants having no pathogenicity data or ClinVar annotations, even if the
531+
Not defining this filter will result in variants having no pathogenicity data or ClinVar annotations, even if the
512532
:ref:`pathogenicitySources<pathogenicitysources>` are defined. Failing to include this will result in Exomiser
513533
using default scores based on the assigned variant effect. If you want to score all variants and write failed ones
514534
to the output, it is recommended to use `analysisMode: FULL`.

docs/conf.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@
5959
author = u'Jules Jacobsen, Damian Smedley, Peter Robinson'
6060

6161
# The short X.Y version
62-
version = u'15.0.0'
63-
genome_data_version = u'2512'
64-
phenotype_data_version = u'2512'
62+
version = u'15.1.0'
63+
genome_data_version = u'2602'
64+
phenotype_data_version = u'2602'
6565
# The full version, including alpha/beta/rc tags
6666
release = version
6767

exomiser-cli/CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
# The Exomiser Command Line Interface - Changelog
22

3+
## 15.1.0 2026-06-09
4+
- The `pathogenicityFilter` now has a `target` option to specify whether to filter non-coding variants. The default is
5+
`ALL` but `NON_CODING` can be specified to filter non-coding variants. This change only affects variants found in
6+
non-coding regions. We recommend using the standard `pathogenicityFilter{keepNonPathogenic: true}` for exome analysis,
7+
but when running genomiser (i.e. including REMM/CADD/SPLICE_AI and all non-coding regions) or any analysis including
8+
non-coding regions, use `pathogenicityFilter{keepNonPathogenic: false, target: NON_CODING}`. See the [documentation](https://exomiser.readthedocs.io/en/stable/advanced_analysis.html#pathogenicityfilter)
9+
for more details.
10+
11+
- Fix for issue [#629](https://github.com/exomiser/Exomiser/issues/629) - replace commas in disease names with semicolons.
12+
- Fix for issue [#633](https://github.com/exomiser/Exomiser/issues/633) - calculate variant score for non-symbolic insertions > 1kb.
13+
- Change for issue [#635](https://github.com/exomiser/Exomiser/issues/635) - Display CADD phred scores alongside the scaled scores in HTML.
14+
315
## 15.0.0 2026-02-28
416
[![Rare Disease Day](https://www.rarediseaseday.org/wp-content/uploads/Rare-disease-day-logo.svg
517
)](https://www.rarediseaseday.org)

exomiser-cli/README.md

Lines changed: 65 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,8 @@ It is important to note that if an authentication issue arises, it may be necess
223223
file to include authentication for `https://index.docker.io/v1/`.
224224
This can be done by providing your base64-encoded Docker credentials.
225225

226-
Docker images are build using [jib](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#quickstart)
227-
which does not require a Docker daemon to be running/installed in order to build an image.
226+
Docker images are built using [jib](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#quickstart)
227+
which does not require a Docker daemon to be running/installed to build an image.
228228

229229

230230
```shell
@@ -235,92 +235,99 @@ ${docker.repository}/exomiser-cli latest f39698e3f36b 53 ye
235235
${docker.repository}/exomiser-cli ${project.version} f39698e3f36b 53 years ago 274 MB
236236
```
237237

238-
### <a id="working-with-the-distroless-image"></a>Working with the distroless image (no shell)
238+
### <a id="docker-environment-variables"></a>Docker environment variables
239239

240-
Distroless images are the default image and come without a shell. These are can be pulled using
241-
`docker pull ${docker.registry}/${docker.repository}/exomiser-cli:latest` or better `docker pull ${docker.registry}/${docker.repository}/exomiser-cli:${project.version}`
240+
Exomiser requires data directory and version configuration. The Docker images include a preconfigured environment variable `EXOMISER_DATA_DIRECTORY=/exomiser-data`.
242241

243-
If you choose to run the distroless image use the following command:
242+
**Option 1: Set environment variables directly**
244243

245244
```shell
246-
docker run -v "/path/to/exomiser-data:/exomiser-data" \
247-
-v "/path/to/exomiser/exomiser-config/:/exomiser" \
248-
-v "/path/to/exomiser/results:/results" \
249-
${docker.repository}/exomiser-cli:${project.version} \
250-
analyse --analysis /exomiser/test-analysis-exome.yml \
251-
--spring.config.location=/exomiser/application.properties
245+
-e EXOMISER_HG19_DATA_VERSION=2512 \
246+
-e EXOMISER_PHENOTYPE_DATA_VERSION=2512
252247
```
253248

254-
or using Spring configuration arguments instead of the `application.properties`:
249+
**Option 2: Use an application.properties file**
250+
Mount your file and point Spring to it: `application.properties`
255251

256252
```shell
257-
docker run -v "/path/to/exomiser-data:/exomiser-data" \
258-
-v "/path/to/exomiser/exomiser-config/:/exomiser" \
259-
-v "/path/to/exomiser/results:/results" \
260-
${docker.repository}/exomiser-cli:${project.version} \
261-
analyse --analysis /exomiser/test-analysis-exome.yml \
262-
# minimal requirements for an hg19 exome sample
263-
--exomiser.data-directory=/exomiser-data \
264-
--exomiser.hg19.data-version=${genome.data.version} \
265-
--exomiser.phenotype.data-version=${phenotype.data.version}
253+
-v /path/to/application.properties:/config/application.properties \
254+
-e SPRING_CONFIG_LOCATION=/config/application.properties
266255
```
267-
-----
268256

269-
In both cases, to run the image you will need the standard Exomiser directory layout to mount as separate volumes as in the CLI and
270-
supply an `application.properties` file or environmental variables to point to the data required _e.g._
257+
### Docker image types
258+
Exomiser provides two image types:
259+
- Distroless (default): Minimal security-hardened image without a shell. Tagged as `:latest` or `:${project.version}`
260+
- Bash: Includes a shell for interactive use, required for NextFlow. Tagged as `:latest-bash` or `:${project.version}-bash`
271261

272-
Keep in mind to update your `application.properties` to point the data to the location
273-
inside the container, like:
262+
### Required volumes and directory structure
263+
Both image types require mounting three directories:
274264

265+
```shell
266+
-v "/host/path/to/exomiser-data:/exomiser-data" # Contains unpacked data directories like 2512_hg19
267+
-v "/host/path/to/exomiser-cli/examples/:/examples" # Analysis files and test data
268+
-v "/host/path/to/results:/results" # Output directory for results
269+
```
275270

276-
```application.properties
277-
exomiser.data-directory=/exomiser-data
271+
Example data directory structure:
272+
273+
```
274+
exomiser-data/
275+
├── 2512_hg19/
276+
└── 2512_phenotype/
278277
```
279278

280-
-----
281-
### <a id="working-with-the-docker-bash-image"></a>Working with the docker bash images
279+
### Working with the distroless image
280+
281+
Pull the image:
282282

283-
Running the image with the following command will open the shell and create volumes with
284-
links to the exomiser data and connects the results to your local machine. `/results` should be an empty directory,
285-
where Exomiser will write the results into.
283+
``` shell
284+
docker pull ${docker.registry}/${docker.repository}/exomiser-cli:${project.version}
285+
```
286286

287+
Run Exomiser (the exomiser command is the entrypoint, so pass arguments directly):
287288

288289
```shell
289-
docker run -v "/path/to/exomiser-data:/exomiser-data" \
290-
-v "/path/to/exomiser/exomiser-config/:/exomiser" \
291-
-v "/path/to/exomiser/results:/results" \
292-
${docker.repository}/exomiser-cli:${project.version}-bash
290+
docker run \
291+
-v "/host/path/to/exomiser-data:/exomiser-data" \
292+
-v "/host/path/to/exomiser-cli/examples/:/examples" \
293+
-v "/host/path/to/results:/results" \
294+
-e EXOMISER_HG19_DATA_VERSION=2512 \
295+
-e EXOMISER_PHENOTYPE_DATA_VERSION=2512 \
296+
${docker.repository}/exomiser-cli:${project.version} \
297+
analyse --analysis /examples/preset-exome-analysis-human-only.yml \
298+
--vcf /examples/Pfeiffer.vcf.gz --assembly hg19 \
299+
--sample /examples/pfeiffer-phenopacket.yml \
300+
--output-directory /results --output-format=PARQUET --output-filename docker-test
293301
```
294302

295-
Here the contents of `/path/to/exomiser/exomiser-config` is simply the `application.properties` file and the example files
296-
to test all is working correctly.
303+
Working with the bash image
304+
Pull the image:
297305

298306
```shell
299-
$ tree /path/to/exomiser/exomiser-config/
300-
exomiser-config/
301-
├── application.properties
302-
├── Pfeiffer.vcf.gz
303-
├── Pfeiffer.vcf.gz.tbi
304-
└── test-analysis-exome.yml
307+
docker pull ${docker.registry}/${docker.repository}/exomiser-cli:${project.version}-bash
305308
```
306309

307-
#### Running Exomiser from the bash shell
308-
After running the following commands Exomiser will be started from the containers shell.
310+
Start an interactive shell:
309311

310312
```shell
311-
source enable_exomiser.sh
312-
bash enable_exomiser.sh
313-
exomiser analyse --analysis /exomiser/test-analysis-exome.yml \
314-
--spring.config.location=/exomiser/application.properties
313+
docker run -it \
314+
-v "/host/path/to/exomiser-data:/exomiser-data" \
315+
-v "/host/path/to/exomiser-cli/examples/:/examples" \
316+
-v "/host/path/to/results:/results" \
317+
-e EXOMISER_HG19_DATA_VERSION=2512 \
318+
-e EXOMISER_PHENOTYPE_DATA_VERSION=2512 \
319+
${docker.repository}/exomiser-cli:${project.version}-bash
315320
```
316321

317-
or using Spring configuration arguments instead of the `application.properties`:
322+
From the bash prompt, run Exomiser:
318323

319324
```shell
320-
exomiser --analysis /exomiser/test-analysis-exome.yml \
321-
# minimal requirements for an hg19 exome sample
322-
--exomiser.data-directory=/exomiser-data \
323-
--exomiser.hg19.data-version=${genome.data.version} \
324-
--exomiser.phenotype.data-version=${phenotype.data.version}
325+
exomiser analyse --analysis /examples/preset-exome-analysis-human-only.yml \
326+
--vcf /examples/Pfeiffer.vcf.gz --assembly hg19 \
327+
--sample /examples/pfeiffer-phenopacket.yml \
328+
--output-directory /results --output-format=PARQUET --output-filename docker-test
325329
```
330+
331+
If successful, results will be written to /results/docker-test.parquet.
332+
326333
-----

exomiser-cli/pom.xml

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<parent>
3333
<groupId>org.monarchinitiative.exomiser</groupId>
3434
<artifactId>exomiser</artifactId>
35-
<version>15.0.0</version>
35+
<version>15.1.0</version>
3636
</parent>
3737

3838

@@ -210,7 +210,7 @@
210210
<profile>
211211
<id>docker:bash</id>
212212
<properties>
213-
<docker.base.image>eclipse-temurin:25.0.2_10-jre</docker.base.image>
213+
<docker.base.image>eclipse-temurin:25.0.2_10-jre@sha256:ff82c74a630c08b417502c4c18189e62074edbb28eb1f2d31b799ac138c01058</docker.base.image>
214214
</properties>
215215
<build>
216216
<plugins>
@@ -225,6 +225,7 @@
225225
<goal>build</goal>
226226
</goals>
227227
<configuration>
228+
<containerizingMode>packaged</containerizingMode>
228229
<from>
229230
<image>
230231
${docker.base.image}
@@ -234,11 +235,6 @@
234235
<os>linux</os>
235236
<architecture>arm64</architecture>
236237
</platform>
237-
<!-- No longer provided was this for MacOS? -->
238-
<!-- <platform>-->
239-
<!-- <os>linux</os>-->
240-
<!-- <architecture>arm</architecture>-->
241-
<!-- </platform>-->
242238
<platform>
243239
<os>linux</os>
244240
<architecture>amd64</architecture>
@@ -258,16 +254,25 @@
258254
<entrypoint>
259255
<arg>/bin/bash</arg>
260256
</entrypoint>
257+
<environment>
258+
<EXOMISER_DATA_DIRECTORY>/exomiser-data</EXOMISER_DATA_DIRECTORY>
259+
</environment>
261260
<volumes>
262261
<volume>/exomiser-data</volume>
263-
<volume>/exomiser</volume>
264262
<volume>/results</volume>
265263
</volumes>
266264
</container>
267265
<extraDirectories>
266+
<paths>
267+
<path>
268+
<from>src/main/jib</from>
269+
<into>/usr/local/bin</into>
270+
<includes>exomiser</includes>
271+
</path>
272+
</paths>
268273
<permissions>
269274
<permission>
270-
<file>/entrypoint.sh</file>
275+
<file>/usr/local/bin/exomiser</file>
271276
<mode>755</mode>
272277
</permission>
273278
</permissions>
@@ -294,6 +299,7 @@
294299
<goal>build</goal>
295300
</goals>
296301
<configuration>
302+
<containerizingMode>packaged</containerizingMode>
297303
<from>
298304
<image>
299305
${docker.base.image}
@@ -320,9 +326,11 @@
320326
</tags>
321327
</to>
322328
<container>
329+
<environment>
330+
<EXOMISER_DATA_DIRECTORY>/exomiser-data</EXOMISER_DATA_DIRECTORY>
331+
</environment>
323332
<volumes>
324333
<volume>/exomiser-data</volume>
325-
<volume>/exomiser</volume>
326334
<volume>/results</volume>
327335
</volumes>
328336
</container>

0 commit comments

Comments
 (0)