New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ancient keyword causes incorrect scheduling order #946
Comments
I observed the same issue under |
I've been seeing a similar issue (in an incredibly complex pipeline which may not be appropriate to debugging; see #771), but this example you gave doesn't seem to reproduce the behavior for me when I actually run it. I don't think the dryrun is an appropriate test, since the order of jobs in the dryrun isn't necessarily the order in which jobs will actually be executed. Unfortunately, I'm having trouble replicating it in a simpler pipeline. |
I see, well if it helps the pipeline that trimmed down to get the minimal example is the MERlin software for analyzing MERFISH data developed by Xiaowei Zhuang's lab: https://github.com/emanuega/MERlin |
…uming job (snakemake#1202) Fixes snakemake#946 Co-authored-by: Johannes Köster <johannes.koester@uni-due.de>
Snakemake version
6.1.0
Describe the bug
In some situations, putting ancient() around input files causes rules to be run before the input files they need exist.
Minimal example
Here is a minimal example Snakefile:
Doing a dry run (snakemake -n) results in this output:
When the DAG is built, it doesn't seem to recognize that Step1 cannot be run before Preprocess, and instead schedules them to run simultaneously. This can be seen by one of the Step1 jobs appearing before the Preprocess job.
Removing the use of ancient from Step1 results in the correct scheduling. This workflow works on older version of Snakemake, but at some point it stopped working. I'm not sure about the exact version where it stopped working, but I know that it works in version 5.12.0.
The text was updated successfully, but these errors were encountered: