conchoecia / odp

oxford dot plots
GNU General Public License v3.0
131 stars 9 forks source link

running on M1 mac issues, solved! #77

Open madeleineaaseremedios opened 3 months ago

madeleineaaseremedios commented 3 months ago

Hi, I had a few problems getting this to run on my M1 mac with python 3.11.5, but with a few changes, I think it's all worked okay now.

1) Error message:

cd LG_db; \
    tar --skip-old-files -xzvf BCnS_LGs.tar.gz; \
    cd BCnS_LGs; \
    snakemake
tar: Option --skip-old-files is not supported

This isn't GNU-tar it's the mac bsdtar, so that option doesn't exist. You can get GNUtar for macs, but instead for now, I changed tar --skip-old-files to tar -k in the Makefile.

2) Error message:

/bin/bash: line 1: hmmbuild: command not found
[Thu Jun 13 13:23:20 2024]
Error in rule make_hmm:
    jobid: 1846
    input: aligned/mer_BFL_EMU_HVU_PYE_RES_447.fasta
    output: hmms/mer_BFL_EMU_HVU_PYE_RES_447.hmm
    shell:

        hmmbuild hmms/mer_BFL_EMU_HVU_PYE_RES_447.hmm aligned/mer_BFL_EMU_HVU_PYE_RES_447.fasta

        (one of the commands exited with non-zero exit code; note that snakemake uses bash strict mode!)

HMMER was not listed as a dependency, but it didn't work for me until I installed it with pip.

3) Error message:

snakemake: error: unrecognized arguments: -r

snakemake -r is deprecated (it's default true now), so I just deleted the -r from the command.

4) Error message:

Error in rule make_diamond_and_blast_db:
    jobid: 10
    input: odp/db/Popi_prots.pep.gz, odp/db/input_check/Popi_pass.txt
    output: odp/db/dmnd/Popi_prots.gz.dmnd, odp/db/Popi_prots.pep.gz.phr, odp/db/Popi_prots.pep.gz.pin, odp/db/Popi_prots.pep.gz.psq
    shell:

        mkdir -p odp/db/dmnd
        diamond makedb --in odp/db/Popi_prots.pep.gz --db odp/db/dmnd/Popi_prots.gz.dmnd
        zcat odp/db/Popi_prots.pep.gz | makeblastdb -in - -out odp/db/Popi_prots.pep.gz -title Popi_prots.pep.gz -dbtype prot

        (one of the commands exited with non-zero exit code; note that snakemake uses bash strict mode!)

So, in odp, I changed all instances of zcat to zcat < based on this.

5) Error message:

UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail.
  # make the black dots a little lighter
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSWindow should only be instantiated on the main thread!'

The issue I am now getting is a problem with plotting, and it seems to be a problem with macs so, based on the fix here where they set matplotlib mode to Agg (so that doesn't make an interactive gui, it just writes to files), I added the line matplotlib.use('Agg') underneath line 1381 import matplotlib in odp_functions.py, and under line 7 in odp_plotting_functions.py.

It seems to work now, I hope this is useful to someone else!