ComparativeGenomicsToolkit / Comparative-Annotation-Toolkit

Apache License 2.0
170 stars 48 forks source link

sqlalchemy & pyfasta dependency issues #281

Closed avianalter closed 1 year ago

avianalter commented 1 year ago

More fun times with CAT.

Running a docker container with CAT, but got the following error: .... (more traceback bs) .... File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/sql/coercions.py", line 1144, in _raise_for_expected element, argname=argname, resolved=resolved, advice=advice, kw File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/sql/coercions.py", line 718, in _raise_for_expected kw, File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/sql/coercions.py", line 536, in _raise_for_expected raise exc.ArgumentError(msg, code=code) from err

sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [Table('table_updates', MetaData(), Column('update_id', VARCHAR(length=128), table=, primary_key=True, nullable=False), Column('target_table', VARCHAR(length=128), table=), Column('inserted', DATETIME(), table=), schema=None)]. Did you mean to say select(Table('table_updates', MetaData(), Column('update_id', VARCHAR(length=128), table=, primary_key=True, nullable=False), Column('target_table', VARCHAR(length=128), table=), Column('inserted', DATETIME(), table=), schema=None))?

Google shows that this is an issue arising from an update that was pushed in sqlalchemy starting v 1.3.0. So you'll have to do the following to fix:

python3.7 -m pip install "sqlalchemy<1.3.0"


More fun times - pyfasta is a dependency of CAT but was written for python2, not python3, so a function inside of it uses a type that no longer exists in python3!

Error message: pyfasta/records.py", line 192, in getdata if isinstance(islice, (int, long)): NameError: name 'long' is not defined

Use the following hacky fix simply replace the 'long' type with 'int':

sed -i 's/long/int/g' /usr/local/lib/python3.7/dist-packages/pyfasta/records.py


A new one: bam2wig is back at it...

Error message: bam2wig from the augustus tool package not in global path.

Follow: https://github.com/Gaius-Augustus/Augustus/issues/53#issuecomment-830088580 and https://github.com/Gaius-Augustus/Augustus/blob/master/docs/INSTALL.md#htslib---accessing-common-file-formats-such-as-sam-cram-and-vcf


Even more shenanigans, but should only apply if you are running on a single system (i.e. --binary-mode local and --local-scheduler)

Error message: toil.batchSystems.abstractBatchSystem.InsufficientSystemResources: The job JobFunctionWrappingJob is requesting 8589934592 bytes of memory, more than the maximum of 8261414912 bytes of memory that SingleMachineBatchSystem was configured with. Scale is set to 1.

Hacky fix: edit $CATdir/cat/__init__.py at line 133 to defaultMemory = luigi.Parameter(default='7G', significant=False) similarly edit $CATdir/cat/hints_db.py at various lines to reduce calls for memory (e.g. lines with "memory='16G'" or "15G" or "8G") actually, go carefully through the /cat/ subdirectory to find all instances of high memory demands and correct them - they may crash the workflow way downstream