bioforensics / yeat

YEAT: Your Everyday Assembly Tool
Other
1 stars 0 forks source link

Adding Bandage to YEAT's workflow #34

Closed danejo3 closed 1 year ago

danejo3 commented 1 year ago

The purpose of this PR is to resolve #24--to add Bandage to the workflow.

Bandage is a genome assembly viewer that allows you see the results of an assembly.

In this PR, another snakemake file, to run Bandage, was created. In this workflow, all fastg and gfa files from all assemblers will now create a jpeg file for each individual file.

In order for the user to enable Bandage, users must manually download or create the binary files to run it. Instructions to install Bandage is found in the the README. (Further instructions to install Bandage from the source code was deferred to Bandage's Q/A repo.)

Instead of creating an automatic way to install Bandage, a decision between @standage and @danejo3 was made to ask the users to download it themselves because the installation process for Bandage varies from one operating system to another.

If the user does not have Bandage in their $PATH, YEAT will skip this workflow and complete normally without it.

danejo3 commented 1 year ago

@standage @lovettse Let me know what you guys think. I'd recommend running this particular protype branch on a macOS for easy installation. I'll do more testing and debugging for Linux-based systems ASAP.

standage commented 1 year ago

I just ran SPAdes in --isolate mode and the Bandage step choked and failed because it couldn't find analysis/spades/strain_graph.gfa. You might want to use globbing to test which graph files are present, rather than hardcoding a list of files that may change depending on modes or parameters.

MissingInputException in rule spades in line 21 of /Users/daniel.standage/Software/yeat/yeat/bandage/Snakefile:
Missing input files for rule spades:
    output: analysis/bandage/spades/.done
    affected files:
        analysis/spades/strain_graph.gfa
Traceback (most recent call last):
  File "/Users/daniel.standage/anaconda3/envs/yeat/bin/yeat", line 33, in <module>
    sys.exit(load_entry_point('yeat', 'console_scripts', 'yeat')())
  File "/Users/daniel.standage/Software/yeat/yeat/cli.py", line 186, in main
    bandage.run_bandage(
  File "/Users/daniel.standage/Software/yeat/yeat/bandage/bandage.py", line 42, in run_bandage
    raise RuntimeError("Snakemake Failed")
RuntimeError: Snakemake Failed