Skip to content
Open
Show file tree
Hide file tree
Changes from 50 commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
3285664
init demo
a-frantz Sep 3, 2025
7bc1e3a
revise: mv TOML out of tests dir and into main workspace
a-frantz Sep 9, 2025
cdb13f7
Merge branch 'main' into demonstration/sprocket-test
a-frantz Nov 18, 2025
6438780
switch from TOML to YAML
a-frantz Nov 18, 2025
62744f2
WIP
a-frantz Nov 19, 2025
a9cc715
fix: tests -> assertions
a-frantz Nov 19, 2025
e09621c
Update flag_filter.yaml
a-frantz Nov 19, 2025
75b39f7
Merge branch 'main' into demonstration/sprocket-test
a-frantz Nov 25, 2025
0be911a
feat: use Peter's top level mapping representation
a-frantz Nov 30, 2025
374392a
set up sprocket test infra
a-frantz Dec 9, 2025
d89fd65
picard: lower merge mem for testing
a-frantz Dec 11, 2025
81d9608
point to new fixtures
a-frantz Dec 11, 2025
5d97f28
Revert "picard: lower merge mem for testing"
a-frantz Dec 15, 2025
1b7235d
WIP
a-frantz Dec 27, 2025
881fa7a
delete pytest folder
a-frantz Dec 28, 2025
d2898f0
revise: change validate_read_group logic
a-frantz Dec 28, 2025
6c910ce
test data_structures
a-frantz Dec 28, 2025
64476ad
chore: log TODO
a-frantz Dec 28, 2025
c76f201
more tests
a-frantz Dec 28, 2025
2fb9d23
WIP: remove broken CI elements
a-frantz Dec 28, 2025
d1e0d99
add test depth (more bams and fastqs tested)
a-frantz Dec 29, 2025
51ad295
Update read_group.yaml
a-frantz Dec 29, 2025
2b7d0dd
nesting for test fixtures
a-frantz Dec 29, 2025
b3b9c27
deprecate fastqc
a-frantz Dec 29, 2025
038909d
log TODO
a-frantz Dec 29, 2025
77271b3
tests for fastp and fq
a-frantz Dec 29, 2025
5ed0866
mv reference vcfs to right dir
a-frantz Dec 29, 2025
8a186b6
Create gatk4.yaml
a-frantz Dec 29, 2025
52da94c
WIP
a-frantz Dec 29, 2025
da5d286
Merge branch 'main' into demonstration/sprocket-test
a-frantz Dec 30, 2025
8658e21
Update flag_filter.yaml
a-frantz Jan 3, 2026
2758659
fix: SE works in addition to PE
a-frantz Jan 4, 2026
c5c9944
Merge branch 'main' into demonstration/sprocket-test
a-frantz Jan 27, 2026
1089835
chore: don't specify defaults in two (disagreeing) places
a-frantz Jan 27, 2026
5b69042
add a few of (experimental) output assertions
a-frantz Jan 28, 2026
b1f9d8f
sprocket format
a-frantz Mar 19, 2026
2805d4c
docs: revise best practices and contributing guide (#293)
a-frantz Feb 6, 2026
c958f35
chore: add WDL-specific instructions for copilot (#295)
adthrasher Feb 6, 2026
4a7fa73
chore(Snyk): Security upgrade ubuntu from noble-20250925 to noble-202…
kevin-benton Feb 9, 2026
90573e0
chore(deps): bump urllib3 from 2.5.0 to 2.6.3 (#291)
dependabot[bot] Feb 9, 2026
79aa181
feat: gzip picard validate STDOUT (#298)
a-frantz Feb 16, 2026
74e0dbf
feat: methylation filtering (#283)
adthrasher Feb 16, 2026
21bc68f
chore: GiB -> GB (#302)
adthrasher Feb 23, 2026
7c46ddb
sprocket format overwrite the repo (#303)
a-frantz Mar 10, 2026
0e4f7a8
ci: rm redundant or unneeded actions
a-frantz Mar 23, 2026
4f3db73
ci: add a format check
a-frantz Mar 23, 2026
08d5a59
sprocket lints
a-frantz Mar 23, 2026
c39480b
ignore failing methylation files
a-frantz Mar 23, 2026
21a7752
ci fix
a-frantz Mar 23, 2026
a7b661d
wip: resolving bad merge
a-frantz Mar 27, 2026
6842420
Merge branch 'main' into demonstration/sprocket-test
a-frantz Mar 27, 2026
b974e4e
more bad merging resolutions
a-frantz Mar 27, 2026
04324b9
WIP
a-frantz Apr 10, 2026
0fda8e4
WIP for building a new docker image
a-frantz Apr 14, 2026
65cfbb8
fix
a-frantz Apr 14, 2026
e6bdb41
finish all tools
a-frantz Apr 14, 2026
b2c7fe2
typo
a-frantz Apr 14, 2026
90f011f
lint fixes
a-frantz Apr 14, 2026
08aca48
WIP
a-frantz Apr 15, 2026
edfbaf7
fix ci
a-frantz Apr 15, 2026
ac53096
Merge branch 'main' into demonstration/sprocket-test
a-frantz Apr 15, 2026
a044b1c
fix: sprocket lint fixes
a-frantz Apr 15, 2026
9290baa
use `main` of sprocket-action
a-frantz Apr 15, 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
13 changes: 13 additions & 0 deletions .github/instructions/wdl.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
applyTo: "**/*.wdl"
---
# This file contains instructions for the WDL code style in the workflows directory.

# WDL Development Instructions

- Use the latest version of the WDL spec from https://github.com/openwdl/wdl/
- Use the CONTRIBUTING.md guide in this repository for general coding style and best practices.
- Use the best-practices.md guide in this repository for WDL-specific best practices.
- Prefer the strings in template/common-parameter-meta.txt when writing parameter meta sections.
- Use the templates in template/task-examples.wdl when writing new tasks.
- All WDL code should be checked with Sprocket lint and formatted with Sprocket format before committing.
3 changes: 0 additions & 3 deletions .github/workflows/build-and-test.yaml
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't gotten further, but my assumption was that we'd call sprocket dev test as the second part of this to test the newly built images.

Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,3 @@ jobs:
call-build:
uses: ./.github/workflows/docker-build.yaml
secrets: inherit
call-test:
uses: ./.github/workflows/pytest.yaml
needs: call-build
41 changes: 0 additions & 41 deletions .github/workflows/docker-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -70,47 +70,6 @@ jobs:
tags: ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.TOOL }}:local
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.TOOL }}:buildcache
cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.TOOL }}:buildcache,mode=max
- name: container diff
run: |
docker pull ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.TOOL }}:${{ env.TAG_TO_CHECK }} || true
if [ -z "$(docker images -q ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.TOOL }}:${{ env.TAG_TO_CHECK }})" ]; then
echo "Prior image not found in registry, skipping container-diff"
exit 0
fi
curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 && \
chmod +x container-diff-linux-amd64 && \
./container-diff-linux-amd64 diff --json daemon://${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.TOOL }}:${{ env.TAG_TO_CHECK }} daemon://${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.TOOL }}:local --type=history --type=file --type=size | tee comparison.json
# check overall size result
changed=0
size_diff=$(jq '.[] | select(.DiffType == "Size") | if .Diff[0].Size1 == .Diff[0].Size2 then 1 else 0 end' comparison.json)
if [ $size_diff -eq 0 ]
then
echo "Size of the image has changed"
changed=1
fi
# check file diff result
additions=$(jq '.[] | select(.DiffType == "File") | if .Diff.Adds != null then .Diff.Adds[].Name else 0 end' comparison.json)
deletions=$(jq '.[] | select(.DiffType == "File") | if .Diff.Dels != null then .Diff.Dels[].Name else 0 end' comparison.json)
modifications=$(jq '.[] | select(.DiffType == "File") | if .Diff.Mods != null then .Diff.Mods[].Name else 0 end' comparison.json)
if [ "$additions" != "0" ]
then
echo "Files have been added"
echo $additions
changed=1
fi
if [ "$deletions" != "0" ]
then
echo "Files have been deleted"
echo $deletions
changed=1
fi
if [ "$modifications" != "0" ]
then
echo "Files have been modified"
echo $modifications
changed=1
fi
exit $changed
- name: Run Snyk to check Docker image for vulnerabilities
# Snyk can be used to break the build when it detects vulnerabilities.
# In this case we want to upload the issues to GitHub Code Scanning
Expand Down
29 changes: 0 additions & 29 deletions .github/workflows/miniwdl-check.yaml

This file was deleted.

56 changes: 0 additions & 56 deletions .github/workflows/pytest.yaml

This file was deleted.

11 changes: 0 additions & 11 deletions .github/workflows/sprocket-check.yaml

This file was deleted.

23 changes: 14 additions & 9 deletions .github/workflows/sprocket-lint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,17 @@ name: Workflows Sprocket Lint
on: [push]

jobs:
sprocket_lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run sprocket
uses: stjude-rust-labs/sprocket-action@main
with:
lint: true
except: KnownRules
sprocket_lint:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we're doing lint and format, I'd probably just shorten this to sprocket.

Suggested change
sprocket_lint:
sprocket:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or maybe lengthen to sprocket_lint_format

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run 'sprocket lint'
uses: stjude-rust-labs/sprocket-action@main
with:
lint: true
except: KnownRules
ignore-patterns: methylation
- name: Run 'sprocket format'
uses: stjude-rust-labs/sprocket-action@feat/format
with:
action: format
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
pytest/
# Ignore common bioinformatics formats used in these workflows.
# But only if they are in the root of this repo
/*.fastq.gz
Expand All @@ -14,6 +15,7 @@
**/womtool*
*.jar
runs/
out/
miniwdl_call_cache/
miniwdl_singularity_cache/
_LAST
Expand All @@ -29,7 +31,7 @@ _LAST
results*/
output*/

# Ignore JSONs in the root (probably being used for input to sprocket run)
# Ignore JSONs in the root (probably being used for input)
/*.json

# Ignore `sprocket doc` dir
Expand Down
44 changes: 44 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,50 @@ Our pull request template has an extensive checklist that must be completed prio

Note that the maintainers reserve the right to close any submission without review for any reason.

## Expectations for WDL contributions

We have some opinionated rules and guidelines we use while writing WDL for this repository. These include:

- See `template/common-parameter-meta.txt` for common description strings.
- If applicable, use the same parameter name and help text as the underlying tool called by the task.
- All requirement values are overridable at runtime. However, tasks should have easily configurable memory and disk space allocations.
- See the various tasks in the template directory for possible ways to allocate resources.
- Contributors can mix and match the available templates, copy and pasting subsections as appropriate.
- A task may contain both statically and dynamically allocated resources.
- Multi-core tasks should *always* follow the conventions laid out in the `use_all_cores_task` example (see `template/task-examples.wdl`).
- This is catering to cloud users, who may be allocated a machine with more cores than are specified by the `ncpu` parameter.
- Note that future versions of WDL will likely cause a change to this convention.
- We plan to deprecate the `ncpu` param in favor of accessing the runtime section directly (`n_cores=~{task.runtime.cpu}`).
- Output file names should *always* be determined with either the `outfile_name` parameter or the `prefix` parameter.
- `outfile_name` should be preferred if no downstream tasks/tools rely on the file name/extension.
- Tasks with multiple outputs should always use the `prefix` convention.
- After the input sorting rules in `sprocket lint` have been applied, follow the below rules for further sorting.
- "sample" files come before "reference" files.
- If present, `use_all_cores` should be the last `Boolean` in its block.
- The `ncpu` parameter comes before inputs that allocate memory, which come before inputs that allocate disk space.
- This block of 2-3 inputs should come after all other inputs.
- If a task uses multiple cores or is multithreaded, then at least 2 cpu should be specified.
- Use the `as` keyword sparingly; only in the case of increased readability or to avoid name collisions.
- Prefer using `as` in the import block rather than at the task/workflow call level.
- When using `as` to rename an invalid URI, attempt to make as few changes to the filename as possible (i.e. try not to abbreviate).
- To disambiguate a task or workflow file from it's contents, you can respectively add the `_tasks` or `_wf` suffix in the import section.
- Whenever possible, prefer a Docker image maintained by an external source (such as BioContainers) rather than creating your own image.
- When adding a `Dockerfile` to this repository, follow the below conventions:
- Create a directory under the `docker/` directory and choose an appropriate name (likely shared with the underlying tool). The `Dockerfile` should be nested under this new directory. Then create a `package.json` alongside the `Dockerfile`. The `package.json` file is required to contain two JSON fields (`name` and `version`). It can optionally contain a `revision` field.
- Docker images should be versioned according to the following convention
- The `version` should be shared with whatever underlying tool is being used
- If no specific tool is named (e.g. the `util` image), default to SemVer. Ignore the next 3 bullet points.
- The revision should start with zero (`0`).
- If the Docker image gets updated, *without* updating the base tool's version, increment the number by one.
- If the Docker image gets updated, *including* updating the base tool's version, revert back to zero.
- Any tasks which are deprecated should have a `deprecated: true` key in their `meta` section.
- Never include a `deprecated: false` key in any production tasks. All tasks are assumed to not be deprecated unless otherwise noted.
- In addition, there should be a `warning` key which starts with the text `**[DEPRECATED]**`.
- No other text or explanation is required after the above text, but it can be added for further context.
- These two conventions allow for a task's deprecated status to be communicated in multiple ways, ensuring no user misses the notice.
- Deprecated tasks should be placed at the end of their file.
- While WDL allows embedded scripts in the `command` block sections, this repository requires scripts (e.g. R, Python) to be separate and placed in the `scripts` folder. The relevant Docker image build for your task should then include the script during the build so the task can access it. This separation of concerns improves the developer experience by improving syntax highlighting in the WDL document and enabling linting and formatting checks for the scripting languages.

## FAQs

### Can I use Artificial Intelligence (AI)?
Expand Down
Loading
Loading