Issue running Biowdl Germline-DNA v4.1.0: unusable runtime struct initializer
See original GitHub issueFull error:
workflow Germline (germline.wdl Ln 34 Col 1) failed :: dir: "/exports/sasc/rhpvorderman/testminiwdl/germline-dna/20220802_153134_Germline", error: "EvalError", message: "unusable runtime struct initializer (member type mismatch, lacking required member, or extra member)", node: "call-sampleWorkflow-0", pos: {"source": "/exports/sasc/rhpvorderman/testminiwdl/germline-dna/germline.wdl", "line": 119, "column": 26}
The WDL file and its imports can be downloaded here: https://github.com/biowdl/germline-DNA/releases/tag/v4.1.0 (germline_v4.1.0.wdl and its accompanying imports zip).
It works fine in Cromwell. There are some optional members in the structs that we use. Apparently miniwdl cannot handle that properly. Unfortunately I cannot get a more descriptive error message regarding which member.
Issue Analytics
- State:
- Created a year ago
- Comments:8 (4 by maintainers)
Top Results From Across the Web
Issues · openwdl/wdl - GitHub
runtime struct initialization from select_first(). #491 opened on Jan 24 by Melkaz ... Proposal: add required runtime-like section for execution engine.
Read more >Home | BioWDL: germline-DNA
A BioWDL variantcalling pipeline for germline DNA data. Starting with FASTQ files to produce VCF files. Category:Multi-Sample.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Hi, sorry to reopen this. I have a similar error now with the
gender
member of the struct. That is not defined in the JSON. As a result MiniWDL crashes ongender = select_first([sample.gender, "unknown"]),
in the wdl file. So miniwdl does not complain about undefined Struct members in the JSON if they are optional, but also does not add them to the struct and set them toNone
. The latter option is preferred to complaining in my opinion.EDIT: I did some further debugging. It seems it goes wrong in the
value.from_json
function. Where the struct for the SampleConfig is correctly loaded yet the nested struct types are inferred from json (_infer_from_json
) rather than serialized to their native struct types.EDIT2: Have been able to fix it in the wdl with the following code:
Where previously
scatter (sample in sampleConfig.samples)
was used. So I made the coercion explicit. However, since the struct fields have explicit Sample types, the coercion should also happen in the simpler scatter example. I am also happy to report the workaround does not break cromwell, so at least I have a good workaround now for this issue.Yes #581 Solved this particular issue on the germline-dna pipeline. Great, thanks!