This repository contains PharmCAT, a Java-based pharmacogenomics tool with a Python preprocessor and a small Node/Yarn release/docs toolchain.
- Keep changes narrowly scoped to the user’s request.
- Prefer minimal edits that preserve existing behavior outside the requested area.
- Do not update generated data, examples, release metadata, or packaged artifacts unless the task explicitly requires it.
src/: main Java application code and resources.preprocessor/: Python-based preprocessing scripts and support files.docs/: documentation site content.bin/: packaged entrypoint scripts.dockstore/: pipeline packaging assets..github/workflows/: CI and release workflows.
- Java 17 is the baseline runtime and compile target.
- Gradle is the primary build/test entrypoint via
gradlew.baton Windows and./gradlewon Unix. - Node
> 24with Yarn 4 is used for release automation and docs deployment tasks, not the main application build. - Python is used under
preprocessor/, but Python package changes should stay isolated to that area unless explicitly requested.
From the repository root:
- Build/test Java code:
gradlew.bat testgradlew.bat shadowJar
- Test Python preprocessor:
make test-preprocessor
Prefer the smallest command that validates the change.
Be deliberate when editing these. Only change them when the task explicitly calls for it.
CHANGELOG.mddocs/_config.ymlbin/setup.shpreprocessor/pcat/common.pydockstore/pipeline/README.mddockstore/pipeline/PharmCAT_Pipeline.wdl
package.json drives semantic-release configuration for the files above.
Never modify these files:
- top-level
pharmcat_positions.*andpharmcat_regions.bed
- Follow
.editorconfig: spaces by default, 2-space indentation, 4 spaces for Python, tabs inMakefile. - Preserve existing naming and structure conventions in touched files.
- Do not introduce unrelated formatting churn.
- For Java changes, keep compatibility with the current Gradle/JDK 17 setup unless the task explicitly changes toolchain requirements.
- For Java logic changes, prefer targeted Gradle tests first.
- For preprocessor-only changes, validate the smallest relevant command or test path in
preprocessor/. - For docs-only changes, avoid runtime-heavy validation unless the task depends on generated docs output.
- If a task touches release or packaging behavior, note clearly which outputs are expected to change.
- This is a biomedical/pharmacogenomics project. Treat behavioral changes as high sensitivity; avoid silent logic changes without corresponding validation.
- Some workflows update generated examples, caches, and reference assets. Do not run them casually in the course of unrelated work.
- The
Makefileincludes commands that clean and regenerate test data/results. Use those only when the task requires that workflow.