bioinformatics-centre / BayesTyper

A method for variant graph genotyping based on exact alignment of k-mers
86 stars 7 forks source link

ChildIOException: File/directory is a child to another output #29

Open Parsoa opened 4 years ago

Parsoa commented 4 years ago

I have installed the latest version along with all the dependencies and have configured it to test run on a single sample using all three tools (Manta, GATK, Platypus). It fails on start with the following error:

snakemake --snakefile=/share/Codes/output/revision/bayestyper/call_candidates_and_genotype.smk  --cores=24
/share/Codes/venv3/lib/python3.5/site-packages/snakemake/workflow.py:14: FutureWarning: read_table is deprecated, use read_csv instead, passing sep='\t'.
  from functools import partial
Building DAG of jobs...
ChildIOException:
File/directory is a child to another output:
/share/Codes/output/revision/bayestyper/manta/HG00514
/share/Codes/output/revision/bayestyper/manta/HG00514/results/variants/candidateSV.vcf.gz

Seems like an error internal to Snakemake. I tried replacing all mkdir command with mkdir -p as suggest here but no such commands are executed by the jobs in the snakefiles. Removing Manta

jonassibbesen commented 4 years ago

Thank you for writing. I am adding @lassemaretty who wrote the Snakemake pipeline. Hopefully he can help.

Parsoa commented 4 years ago

Any update on this? Thanks.

blaiseli commented 4 years ago

Same issue for me with the snakemake workflow I'm currently writing. I never had this before, but, on the other hand, I had rarely had rules whose output was a directory(), so I don't know whether this is a recent issue with snakemake or just me not writing my workflow correctly.

jonassibbesen commented 4 years ago

@Parsoa Thank you for your patience. I have reached out to the author of the Snakemake pipeline again. He is really busy, but hopefully I will hear from him soon.

blaiseli commented 4 years ago

For information, I found that my issue doesn't happen with snakemake version 5.7.4, and happens since at least version 5.8.2. I'm curious to know whether this is the same here.

lassemaretty commented 4 years ago

Hi blaiseli,

Sorry for the late reply. I am the author of the Snakemake workflow. I am currently on leave and not able to fix the issue right now. I expect to be back in a few weeks and will take a look at your issue as soon as I am back. I am. really sorry for the inconvenience.

Best,

Lasse

blaiseli commented 4 years ago

@lassemaretty This is not really my issue: my issue was with my own workflow, and I commented here in case it could help understanding the problem, because it looked similar.

For your information, the author of snakemake just made a change that might fix the issue reported in the case of your workflow: https://github.com/snakemake/snakemake/commit/0c289a650803f08f35e68392fb066e8977950b2b

As I understand it, now it should be OK to have a directory and some files within that directory as output of a single rule, but not OK to have the files as output of a different rule than the one having the directory as output.

hmkim commented 2 years ago

With checkpoint and output have the directory() function, I got the same error.

nicolasgoedert97 commented 2 years ago

I found a way to circumvent this error: Just provide your output directory as params instead of output. Then ofc you will need to create the folder if it does not exist. Additionally you will need another output file in that rule instead of the directory.