diff --git a/.bumpversion.toml b/.bumpversion.toml index 8742b07c..039b57af 100644 --- a/.bumpversion.toml +++ b/.bumpversion.toml @@ -1,5 +1,5 @@ [tool.bumpversion] -current_version = "2.3.1" +current_version = "2.3.1.9001" search = "{current_version}" replace = "{new_version}" message = "Bump version: {current_version} → {new_version}" diff --git a/.github/workflows/build_conda_recipes.yaml b/.github/workflows/build_conda_recipes.yaml index efe342df..b576f803 100644 --- a/.github/workflows/build_conda_recipes.yaml +++ b/.github/workflows/build_conda_recipes.yaml @@ -12,7 +12,7 @@ env: conda_env_yaml: conda/env/yaml conda_env_lock: conda/env/lock conda_org: pcgr - VERSION: '2.3.1' # bump + VERSION: '2.3.1.9001' # bump jobs: conda_build: # When merging to one of the branches above and the commit message matches diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 7312d72f..37d85cd0 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -60,7 +60,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -sigven@ifi.uio.no. +sigven@ifi.uio.no or peterdiakumis@gmail.com. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..88a69f93 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,133 @@ +# Contributing to PCGR + +Thanks for your interest in contributing to the Personal Cancer Genome Reporter +(PCGR). Contributions of all kinds are welcome — bug reports, documentation +improvements, feature suggestions, and code. + +This document explains how to report problems and how to propose changes. + +## Code of conduct + +This project follows a [Code of Conduct](CODE_OF_CONDUCT.md). By participating, +you are expected to uphold it. Please report unacceptable behaviour to the +maintainers. + +## Ways to contribute + +- **Report a bug** — open an issue (see below for what to include) +- **Request a feature** — open an issue describing the use case +- **Ask a question** — use GitHub Discussions or open an issue +- **Improve documentation** — corrections and clarifications are very welcome +- **Contribute code** — see *Development workflow* below + +## Reporting bugs + +Most issues we receive can only be diagnosed with the full run context, so +please include **all** of the following. Issues without this information will +usually need a follow-up before we can help. + +1. **PCGR version** (`pcgr --version`) +2. **Reference data bundle version** and the genome assembly used + (`grch37` or `grch38`) +3. **Installation method** — Conda, Docker, Singularity/Apptainer — + including the image tag or environment specification +4. **Operating system** and, if relevant, the compute environment + (laptop, HPC/cluster, cloud) +5. **The exact command you ran**, in full, with all arguments +6. **The complete error message and log output** (please paste as text in a + fenced code block rather than as a screenshot) +7. **Input characteristics** — variant caller used, approximate number of + variants, tumour type, whether CNA/expression/fusion input was supplied +8. **A minimal example input** that reproduces the problem, if you are able to + share one + +Please do not attach patient-identifiable data to a public issue. If a problem +can only be reproduced with sensitive data, say so in the issue and we will +find another way to investigate. + +## Requesting features + +When proposing a feature, describe the scientific or clinical use case rather +than only the implementation. PCGR aims to produce clinically interpretable +output aligned with established guidelines (AMP/ASCO/CAP, ClinGen/CGC/VICC), so +proposals that affect variant classification or tier assignment should reference +the relevant guideline or evidence source. + +## Development workflow + +We use a simple two-branch model: + +- **`main`** — reflects the current released version. Do not open pull requests + against `main`. +- **`dev`** — the active development branch. **All pull requests should target + `dev`.** + +To contribute code: + +1. Fork the repository and create a branch from `dev` + (e.g. `feature/short-description` or `fix/short-description`) +2. Make your changes, keeping the pull request focused on a single concern +3. Update documentation and the changelog where relevant +4. Open a pull request against `dev`, describing **what** the change does and + **why** it is needed + +For anything substantial — new annotation sources, changes to classification or +tiering logic, or architectural changes — please open an issue to discuss the +approach before writing code. This saves time on both sides. + +## Code organisation + +PCGR spans two languages, and it helps to know where a change belongs: + +- **Python** — the pipeline, variant annotation, and much of the interpretation + logic (including oncogenicity classification and biomarker matching) +- **R** (the [`pcgrr`](https://github.com/sigven/pcgrr) package) — report + generation and visualisation via Quarto, together with parts of the clinical + interpretation logic, notably AMP/ASCO/CAP tier assignment + +Note that this split is not absolute: some classification logic currently lives +in `pcgrr` alongside the reporting code. If you are unsure where a change +belongs, open an issue and ask before starting work. + +## Coding conventions + +- Follow the style of the surrounding code +- Python: follow PEP 8 where practical; add docstrings to new functions +- R: follow the existing style in `pcgrr` +- Keep commits reasonably self-contained with descriptive messages +- Do **not** commit reference data bundles, large binary files, or test data + containing patient information + +## Testing and validation + +Automated test coverage is currently limited and is actively being expanded. In +the meantime, we ask contributors to describe how a change was validated: + +- State the command(s) you ran to exercise the change +- For changes affecting annotation, classification or tiering, show the effect + on output — for example, the relevant rows or fields before and after +- Confirm that an end-to-end run completes on example data +- Where tests exist, please run them and add new ones covering your change + +Continuous integration runs automatically on pull requests. Please make sure it +passes before requesting review. + +## Releases and versioning + +PCGR follows semantic versioning. Releases are cut from `dev` into `main` by the +maintainers, accompanied by an updated changelog. Reference data bundles are +versioned separately and tied to specific releases — see the documentation for +the compatible bundle for each version. + +## Licence + +PCGR is released under the MIT licence. By contributing, you agree that your +contributions will be licensed under the same terms. + +## Getting in touch + +- **Bugs and feature requests** — GitHub Issues +- **Questions and general discussion** — GitHub Discussions (to come) +- **Documentation** — https://sigven.github.io/pcgr/ + +Thanks for your effort to improve PCGR! diff --git a/README.md b/README.md index e224952e..1d08eb26 100755 --- a/README.md +++ b/README.md @@ -153,6 +153,15 @@ Sigve Nakken, Ghislain Fournous, Daniel Vodák, Lars Birger Aaasheim, Ola Mykleb Sigve Nakken, Vladislav Saveliev, Oliver Hofmann, Pål Møller, Ola Myklebost, and Eivind Hovig. **Cancer Predisposition Sequencing Reporter (CPSR): a flexible variant report engine for high-throughput germline screening in cancer** (2021). *Int J Cancer*. [doi:[10.1002/ijc.33749](doi:%5B10.1002/ijc.33749)](https://doi.org/10.1002/ijc.33749) +## Contributing + +Contributions are welcome — bug reports, documentation improvements, feature +suggestions, and code. See [CONTRIBUTING.md](CONTRIBUTING.md) for how to report +issues and submit pull requests (note that all PRs should target the `dev` +branch). + +This project follows a [Code of Conduct](CODE_OF_CONDUCT.md). + ## Contact sigven AT ifi.uio.no diff --git a/conda/env/lock/pcgr-linux-64.lock b/conda/env/lock/pcgr-linux-64.lock index 21069b70..d8f4ade5 100644 --- a/conda/env/lock/pcgr-linux-64.lock +++ b/conda/env/lock/pcgr-linux-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 1ec58a3c43c9bc30f5f3b852b906989ca340384dd3031d2650e4fdb4f8e3bf41 +# input_hash: 868c4c18f3fadbaa7bd7a61f045f2b530f3721bcdad9ba4ba30c6c41ca08f354 @EXPLICIT https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda#86d9cba083cd041bfbf242a01a7a1999 https://conda.anaconda.org/conda-forge/linux-64/mpi-1.0-openmpi.tar.bz2#1dcc49e16749ff79ba2194fa5d4ca5e7 @@ -71,7 +71,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.cond https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-h4ab18f5_6.conda#27329162c0dc732bcf67a4e0cd488125 https://conda.anaconda.org/bioconda/linux-64/muscle-3.8.1551-h9948957_9.tar.bz2#abeab9c9f2802eae4f867260650837f6 https://conda.anaconda.org/bioconda/linux-64/mustang-3.2.4-h9948957_0.tar.bz2#20af4690d0bcf66aaf5dd81056557b2d -https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.2-h3435931_0.conda#312989f1b7318c3763fffdc78df8474e +https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.4-h3435931_0.conda#9980feddc5ad41bac53f7396376e6a2f https://conda.anaconda.org/bioconda/linux-64/prank-170427-h9948957_1.tar.bz2#b42e651a06117c624a977b6a24b1006d https://conda.anaconda.org/bioconda/linux-64/proda-1.0-h503566f_7.tar.bz2#056c35aac8bf387652e54e5553a2ddf4 https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda#d7d95fc8287ea7bf33e0e7116d2b95ec @@ -179,7 +179,7 @@ https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.9-pyhd8ed1a https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda#2c4bd6aeb90bb157456841c3270a0d92 https://conda.anaconda.org/bioconda/noarch/dendropy-5.0.8-pyhdfd78af_1.tar.bz2#0fa94922431d1074792639704d19461d https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d -https://conda.anaconda.org/conda-forge/linux-64/gawk-5.4.0-h0a3468a_0.conda#85817e8a5230ebde83b9ca2a8282e004 +https://conda.anaconda.org/conda-forge/linux-64/gawk-5.4.1-h0a3468a_0.conda#64fd8d804a6aaef55d6d6c562446d72b https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.8.13-h18acefa_0.conda#7c3de21891993e89aabdadaa603ed835 https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda#b395909221b9bd1df066e5930e18855b https://conda.anaconda.org/bioconda/linux-64/htslib-1.21-h5efdd21_0.tar.bz2#06b995dc2244c024b45bbb3e53ae2f27 @@ -300,7 +300,7 @@ https://conda.anaconda.org/bioconda/noarch/perl-www-robotrules-6.03-pl5321hdfd78 https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda#4a85203c1d80c1059086ae860836ffb9 https://conda.anaconda.org/bioconda/linux-64/t-coffee-13.46.2.7c9e712d-pl5321hb2a3317_0.conda#079c99f8f1e607b7ffb8e987ff1658b2 https://conda.anaconda.org/pcgr/noarch/oncokb-annotator-3.4.1.9000-py_0.conda#4f4a8e7191568018f74eccd095a92fa5 -https://conda.anaconda.org/pcgr/noarch/pcgr-2.3.1-pyh4616a5c_0.conda#fe999077681478b304a7aa953d9db3cb +https://conda.anaconda.org/pcgr/label/dev/noarch/pcgr-2.3.1.9001-pyh4616a5c_0.conda#be2389dcb4d06fbfaf341fe06ef6fbf4 https://conda.anaconda.org/bioconda/noarch/perl-bio-tools-run-alignment-tcoffee-1.7.4-pl5321hdfd78af_5.tar.bz2#932416c9ba6a9af43609e04ec5952574 https://conda.anaconda.org/bioconda/noarch/perl-extutils-parsexs-3.63-pl5321hdfd78af_0.conda#1226e6d34340cfe6a3a17c0bc80677e4 https://conda.anaconda.org/bioconda/linux-64/perl-html-parser-3.81-pl5321h4ac6f70_1.tar.bz2#6ef96e2df04cabd48c4c888c1ec57523 diff --git a/conda/env/lock/pcgr-osx-64.lock b/conda/env/lock/pcgr-osx-64.lock index 391d12d1..1ff8590c 100644 --- a/conda/env/lock/pcgr-osx-64.lock +++ b/conda/env/lock/pcgr-osx-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: osx-64 -# input_hash: 7b534fc8e245f0b241e31d303fa12120590f0328c3e2f6b4649f66ebe9735111 +# input_hash: 94e6ce1a0b64e53fc39edca15197e4439d6583440c20235917af93cf502ea6e6 @EXPLICIT https://conda.anaconda.org/conda-forge/osx-64/argtable2-2.13-h10d778d_1004.conda#7ebcbc431363dfbf9ae25e6a7205d414 https://conda.anaconda.org/bioconda/osx-64/consan-1.2-h18d8cf3_7.tar.bz2#219f6fde78a3bc5218a03b8a58403982 @@ -102,7 +102,7 @@ https://conda.anaconda.org/bioconda/osx-64/muscle-3.8.1551-h5fa12a8_9.tar.bz2#5c https://conda.anaconda.org/bioconda/osx-64/mustang-3.2.4-h5fa12a8_0.tar.bz2#a8ffe82e58268ed224ceffefade2bd7a https://conda.anaconda.org/conda-forge/osx-64/openjdk-22.0.1-h2d185b6_0.conda#46e7a579254f336dd53b8d7ab211b347 https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.3-hc881268_0.conda#46be42ab403712fd349d007d763bf767 -https://conda.anaconda.org/conda-forge/osx-64/p11-kit-0.26.2-hd1f9c09_0.conda#abbc95fa774bb9816321aa784f1ca4be +https://conda.anaconda.org/conda-forge/osx-64/p11-kit-0.26.4-h8c408c4_0.conda#23ccceae47c2e20d756fd689ce691ea5 https://conda.anaconda.org/conda-forge/osx-64/pcre-8.45-he49afe7_0.tar.bz2#0526850419e04ac003bc0b65a78dc4cc https://conda.anaconda.org/conda-forge/noarch/perl-carp-1.50-pl5321hd8ed1ab_0.tar.bz2#bdddc03e28019b902da71b722f2288d7 https://conda.anaconda.org/conda-forge/osx-64/perl-clone-0.46-pl5321h6e16a3a_1.conda#626270fdfe8fa1cf8b2edfc14a9524a4 @@ -167,7 +167,7 @@ https://conda.anaconda.org/bioconda/osx-64/probcons-1.12-hd174df1_1.tar.bz2#bdf9 https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.3-h6a5a847_0.conda#65aa14eb080715ecf13b15e5d85acde2 https://conda.anaconda.org/bioconda/osx-64/bedtools-2.31.1-hdd9cfa2_2.tar.bz2#1f66f8ceac0e134b67f297caa63c0450 https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.28-h610c526_0.conda#314cd5e4aefc50fec5ffd80621cfb4f8 -https://conda.anaconda.org/conda-forge/osx-64/gawk-5.4.0-h37db40e_0.conda#d2d12e7acdc045ac5938eca2c1506c4a +https://conda.anaconda.org/conda-forge/osx-64/gawk-5.4.1-h37db40e_0.conda#3154d75effe472881632e2cf871b4ddc https://conda.anaconda.org/conda-forge/osx-64/gnutls-3.8.13-hba17655_0.conda#3bd287df19905ac759f8854ccafb388f https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.8.0-hf9fcc65_1.conda#11711bab5306a6534797a68b3c4c2bed https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_19.conda#1cddb3f7e54f5871297afc0fafa61c2c @@ -284,7 +284,7 @@ https://conda.anaconda.org/bioconda/osx-64/pybedtools-0.10.0-py312ha99f805_2.tar https://conda.anaconda.org/conda-forge/osx-64/scipy-1.18.0-py312h6309490_0.conda#7c6973eecefc02ccdbaa35fca709ff71 https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.7-h734a56e_0.conda#249c794de0d8eb83f7a4d6e4affdbe34 https://conda.anaconda.org/bioconda/osx-64/pasta-1.9.2-py312h7e1f36d_5.tar.bz2#2253ed9b2abeb41417ed72117ccd2d9d -https://conda.anaconda.org/pcgr/noarch/pcgr-2.3.1-pyh4616a5c_0.conda#fe999077681478b304a7aa953d9db3cb +https://conda.anaconda.org/pcgr/label/dev/noarch/pcgr-2.3.1.9001-pyh4616a5c_0.conda#be2389dcb4d06fbfaf341fe06ef6fbf4 https://conda.anaconda.org/bioconda/noarch/perl-bio-featureio-1.6.905-pl5321hdfd78af_4.tar.bz2#1b4b260b45e9cac33fcb45918cda428b https://conda.anaconda.org/bioconda/noarch/vcf2maf-1.6.22-hdfd78af_2.conda#5f3dd4ce7d622798e5c38d6099a02c7c https://conda.anaconda.org/bioconda/noarch/vcf2tsvpy-0.6.2-pyhb241bb5_0.conda#a79af1a6bffe5de2bc55ad56329da38c diff --git a/conda/env/lock/pcgrr-linux-64.lock b/conda/env/lock/pcgrr-linux-64.lock index d5f1e72d..866a717b 100644 --- a/conda/env/lock/pcgrr-linux-64.lock +++ b/conda/env/lock/pcgrr-linux-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: b832532dbfc9b8ca2b3bb04061da7a2fb3e73ac939312c4b99140c29aa8f6e68 +# input_hash: 907f055d21fdb356b803a834f75fadf30f6ca1703082e8e112784436fcaeeddc @EXPLICIT https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2#19f9db5f4f1b7f5ef5f6d67207f25f38 https://conda.anaconda.org/conda-forge/linux-64/dart-sass-1.101.0-hfc2019e_0.conda#3c5956f8de352968510d857a1dfdf929 @@ -37,7 +37,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda#a3 https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda#331ee9b72b9dff570d56b1302c5ab37d https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda#85072b0ad177c966294f129b7c04a2d5 https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda#915f5995e94f60e9a4826e0b0920ee88 -https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda#6178c6f2fb254558238ef4e6c56fb782 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_0.conda#466badda5536d85ddc63ee9404f29735 https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda#b88d90cad08e6bc8ad540cb310a761fb https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda#2c21e66f50753a083cbe6b80f38268fa https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda#eba48a68a1a2b9d3c0d9511548db85db @@ -331,5 +331,5 @@ https://conda.anaconda.org/bioconda/noarch/bioconductor-bsgenome.hsapiens.ucsc.h https://conda.anaconda.org/bioconda/noarch/bioconductor-bsgenome.hsapiens.ucsc.hg38-1.4.5-r45hdfd78af_4.conda#4baa0dd494a2955755bb00fcd0242f00 https://conda.anaconda.org/bioconda/linux-64/bioconductor-variantannotation-1.56.0-r45h01b2380_0.conda#b4c937f978b7d9f1bfe880c3af17897e https://conda.anaconda.org/bioconda/noarch/bioconductor-mutationalpatterns-3.19.1-r45hdfd78af_0.conda#8a1832a474ae43bb4b015b5a106dbe04 -https://conda.anaconda.org/pcgr/noarch/r-pcgrr-2.3.1-h4616a5c_0.conda#15cb05daf8edd1b6b488651bd553dd1a -https://conda.anaconda.org/pcgr/noarch/r-cpsr-2.3.0-h4616a5c_0.conda#00834de27a1f7e2a41953f72b48dfcdb +https://conda.anaconda.org/pcgr/label/dev/noarch/r-pcgrr-2.3.1.9001-h4616a5c_0.conda#b44c3c14e2af1087ad753de83a2a2601 +https://conda.anaconda.org/pcgr/label/dev/noarch/r-cpsr-2.2.5.9012-h4616a5c_0.conda#28080c1c508222229783123de6b5e4e7 diff --git a/conda/env/lock/pcgrr-osx-64.lock b/conda/env/lock/pcgrr-osx-64.lock index d89c6d44..3ae69dc8 100644 --- a/conda/env/lock/pcgrr-osx-64.lock +++ b/conda/env/lock/pcgrr-osx-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: osx-64 -# input_hash: db8905790bb8ad9f4c8e5fb6cfd86de4c4c86790afc1fa3a1fba4ebb34f4e2c0 +# input_hash: c47ae735e100df730b668ef9667c287d56fa7fe34db0d361446df94e4880a6a7 @EXPLICIT https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2#19f9db5f4f1b7f5ef5f6d67207f25f38 https://conda.anaconda.org/conda-forge/noarch/compiler-rt22_osx-64-22.1.8-hcf80936_1.conda#bcf37da1bdd75d1a3c313e3c06561357 @@ -31,7 +31,7 @@ https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.1-hcc62823_1.conda#dc https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda#66a0dc7464927d0853b590b6f53ba3ea https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_osx-64-15.2.0-h49bd711_119.conda#3dc239fadd30c8534716d80346c5ba6d https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda#210a85a1119f97ea7887188d176db135 -https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.4.1-ha1e9b39_0.conda#57cc1464d457d01ac78f5860b9ca1714 +https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.2.0-ha1e9b39_0.conda#d86c1b9259377fb4dcd76fe7472bd2d2 https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda#becdfbfe7049fa248e52aa37a9df09e2 https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda#ec88ba8a245855935b871a7324373105 https://conda.anaconda.org/conda-forge/osx-64/libuv-1.52.1-ha3d0635_0.conda#703303067839cd1da659528a84b3c0cc @@ -338,5 +338,5 @@ https://conda.anaconda.org/bioconda/noarch/bioconductor-bsgenome.hsapiens.ucsc.h https://conda.anaconda.org/bioconda/noarch/bioconductor-bsgenome.hsapiens.ucsc.hg38-1.4.5-r45hdfd78af_4.conda#4baa0dd494a2955755bb00fcd0242f00 https://conda.anaconda.org/bioconda/osx-64/bioconductor-variantannotation-1.56.0-r45h010771c_0.conda#2bc0fa9167469b8ee04400d3b7d3e7f3 https://conda.anaconda.org/bioconda/noarch/bioconductor-mutationalpatterns-3.19.1-r45hdfd78af_0.conda#8a1832a474ae43bb4b015b5a106dbe04 -https://conda.anaconda.org/pcgr/noarch/r-pcgrr-2.3.1-h4616a5c_0.conda#15cb05daf8edd1b6b488651bd553dd1a -https://conda.anaconda.org/pcgr/noarch/r-cpsr-2.3.0-h4616a5c_0.conda#00834de27a1f7e2a41953f72b48dfcdb +https://conda.anaconda.org/pcgr/label/dev/noarch/r-pcgrr-2.3.1.9001-h4616a5c_0.conda#b44c3c14e2af1087ad753de83a2a2601 +https://conda.anaconda.org/pcgr/label/dev/noarch/r-cpsr-2.2.5.9012-h4616a5c_0.conda#28080c1c508222229783123de6b5e4e7 diff --git a/conda/env/yaml/pcgr.yaml b/conda/env/yaml/pcgr.yaml index 68a5516e..21c2568b 100644 --- a/conda/env/yaml/pcgr.yaml +++ b/conda/env/yaml/pcgr.yaml @@ -6,7 +6,7 @@ channels: - bioconda dependencies: - - pcgr ==2.3.1 # bump + - pcgr ==2.3.1.9001 # bump - bioconda::bedtools - bioconda::bcftools - bioconda::ensembl-vep ==115.1 diff --git a/conda/env/yaml/pcgrr.yaml b/conda/env/yaml/pcgrr.yaml index 9209e3ed..839b97f5 100644 --- a/conda/env/yaml/pcgrr.yaml +++ b/conda/env/yaml/pcgrr.yaml @@ -7,7 +7,7 @@ channels: dependencies: - python - - r-pcgrr ==2.3.1 # bump + - r-pcgrr ==2.3.1.9001 # bump - r-cpsr - r-argparse - bioconductor-bsgenome.hsapiens.ucsc.hg38 diff --git a/conda/env/yaml/pkgdown.yaml b/conda/env/yaml/pkgdown.yaml index 0c069835..f8dd76ea 100644 --- a/conda/env/yaml/pkgdown.yaml +++ b/conda/env/yaml/pkgdown.yaml @@ -4,7 +4,7 @@ channels: - bioconda - conda-forge dependencies: - - r-pcgrr ==2.3.1 # bump + - r-pcgrr ==2.3.1.9001 # bump - r-pkgdown - r-readr - r-glue diff --git a/conda/recipe/pcgr/recipe.yaml b/conda/recipe/pcgr/recipe.yaml index dbafd17e..a15260ab 100644 --- a/conda/recipe/pcgr/recipe.yaml +++ b/conda/recipe/pcgr/recipe.yaml @@ -1,6 +1,6 @@ context: name: pcgr - version: 2.3.1 # bump + version: 2.3.1.9001 # bump package: name: ${{ name|lower }} diff --git a/conda/recipe/pcgrr/recipe.yaml b/conda/recipe/pcgrr/recipe.yaml index 55d8c538..5302ea22 100644 --- a/conda/recipe/pcgrr/recipe.yaml +++ b/conda/recipe/pcgrr/recipe.yaml @@ -1,6 +1,6 @@ context: name: r-pcgrr - version: 2.3.1 # bump + version: 2.3.1.9001 # bump package: name: ${{ name|lower }} diff --git a/pcgr/_version.py b/pcgr/_version.py index 3fb09e53..60e25a63 100644 --- a/pcgr/_version.py +++ b/pcgr/_version.py @@ -1 +1 @@ -__version__ = '2.3.1' # bump +__version__ = '2.3.1.9001' # bump diff --git a/pcgrr/DESCRIPTION b/pcgrr/DESCRIPTION index c3e5e74c..67cb2c13 100644 --- a/pcgrr/DESCRIPTION +++ b/pcgrr/DESCRIPTION @@ -1,7 +1,7 @@ Package: pcgrr Type: Package Title: Personal Cancer Genome ReporteR -Version: 2.3.1 +Version: 2.3.1.9001 Authors@R: c(person(given = "Sigve", family = "Nakken", diff --git a/pcgrr/R/oncokb.R b/pcgrr/R/oncokb.R index 50ea3e75..f7aa22f7 100644 --- a/pcgrr/R/oncokb.R +++ b/pcgrr/R/oncokb.R @@ -1130,8 +1130,25 @@ process_oncokb_maf <- # Process HGVSp file (protein changes) if (!is.null(maf_file_hgvsp) && file.exists(maf_file_hgvsp)) { + # Force character typing for all columns (except the known boolean + # flag columns) rather than relying on readr's per-file column type + # guessing: the HGVSp and HGVSg MAF files are read independently, so + # a sparsely populated pass-through column (e.g. + # MUTATION_EFFECT_CITATIONS) can be guessed as a different type + # (character/double/logical) in each file, which later breaks + # dplyr::bind_rows() when rows from both files are combined into + # all_variant_annotations. ANNOTATED/GENE_IN_ONCOKB/VARIANT_IN_ONCOKB + # are kept as logical since they're compared with `== TRUE` below; + # forcing them to character would make that filter match nothing + # (OncoKB's MafAnnotator writes Python-style "True"/"False", and + # "True" == TRUE is FALSE in R, not a match). maf_hgvsp <- readr::read_tsv( - maf_file_hgvsp, show_col_types = FALSE) + maf_file_hgvsp, show_col_types = FALSE, + col_types = readr::cols( + ANNOTATED = readr::col_logical(), + GENE_IN_ONCOKB = readr::col_logical(), + VARIANT_IN_ONCOKB = readr::col_logical(), + .default = readr::col_character())) # Filter for variants in OncoKB genes regardless of ANNOTATED flag: # the MAF annotator batch endpoint misses variants covered only by gene-level @@ -1277,8 +1294,18 @@ process_oncokb_maf <- # Process HGVSg file (considering non-protein changes) if (!is.null(maf_file_hgvsg) && file.exists(maf_file_hgvsg)) { + # Same rationale as the HGVSp read above: force character typing so + # this file's per-column type guesses can't diverge from the HGVSp + # file's and break the later dplyr::bind_rows() of both, while + # keeping the boolean flag columns logical so `== TRUE` filters + # below still work. maf_hgvsg <- readr::read_tsv( - maf_file_hgvsg, show_col_types = FALSE) + maf_file_hgvsg, show_col_types = FALSE, + col_types = readr::cols( + ANNOTATED = readr::col_logical(), + GENE_IN_ONCOKB = readr::col_logical(), + VARIANT_IN_ONCOKB = readr::col_logical(), + .default = readr::col_character())) # Filter for variants in OncoKB genes without a protein change (HGVSg path), # regardless of ANNOTATED flag — same reasoning as HGVSp path above diff --git a/pcgrr/vignettes/installation.Rmd b/pcgrr/vignettes/installation.Rmd index 4c9d43d9..49b07ed6 100644 --- a/pcgrr/vignettes/installation.Rmd +++ b/pcgrr/vignettes/installation.Rmd @@ -15,7 +15,7 @@ require(glue, include.only = "glue") ```{r vars, echo=FALSE} Sys.setenv(VEP_VERSION = "115") -Sys.setenv(PCGR_VERSION = "2.3.1") +Sys.setenv(PCGR_VERSION = "2.3.1.9001") Sys.setenv(BUNDLE_VERSION = "20260620") VEP_VERSION <- Sys.getenv("VEP_VERSION") PCGR_VERSION <- Sys.getenv("PCGR_VERSION") diff --git a/pyproject.toml b/pyproject.toml index 04a23d1d..1029c1d3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "pcgr" -version = "2.3.1" # bump +version = "2.3.1.9001" # bump description = "Personal Cancer Genome Reporter (PCGR) - variant interpretation for precision cancer medicine" authors = [ {name = "Sigve Nakken", email = "sigven@gmail.com"},