agshumate/Liftoff

AttributeError: 'str' object has no attribute 'write'

martinjvickers opened this issue · 1 comments

Hi,

I'm struggling to get liftoff to run, I'm getting the following

$ singularity exec ~/bin/liftoff.img liftoff -g Pisum_sativum_v1a_genes.gff3 assembly.fasta Pisum_sativum_v1a.fa
extracting features
2022-01-28 11:37:47,988 - INFO - Populating features
2022-01-28 11:38:33,896 - INFO - Populating features table and first-order relations: 735638 features
2022-01-28 11:38:33,897 - INFO - Updating relations
2022-01-28 11:39:11,114 - INFO - Creating relations(parent) index
2022-01-28 11:39:29,422 - INFO - Creating relations(child) index
2022-01-28 11:39:30,175 - INFO - Creating features(featuretype) index
2022-01-28 11:39:32,956 - INFO - Creating features (seqid, start, end) index
2022-01-28 11:39:33,439 - INFO - Creating features (seqid, start, end, strand) index
2022-01-28 11:39:33,862 - INFO - Running ANALYZE features
aligning features
[M::main::8.077*1.00] loaded/built the index for 1005 target sequence(s)
[M::mm_mapopt_update::9.982*1.00] mid_occ = 3832
[M::mm_idx_stat] kmer size: 15; skip: 10; is_hpc: 0; #seq: 1005
[M::mm_idx_stat::10.881*1.00] distinct minimizers: 65306526 (45.46% are singletons); average occurrences: 11.133; average spacing: 5.287
[M::worker_pipeline::673.497*1.00] mapped 44756 sequences
[M::main] Version: 2.17-r941
[M::main] CMD: minimap2 -o intermediate_files/reference_all_to_target_all.sam -a --end-bonus 5 --eqx -N 50 -p 0.5 -t 1 assembly.fasta.mmi intermediate_files/reference_all_genes.fa
[M::main] Real time: 674.591 sec; CPU: 674.646 sec; Peak RSS: 11.286 GB
lifting features
Traceback (most recent call last):
  File "/usr/local/miniconda/bin/liftoff", line 10, in <module>
    sys.exit(main())
  File "/usr/local/miniconda/lib/python3.9/site-packages/liftoff/run_liftoff.py", line 12, in main
    run_all_liftoff_steps(args)
  File "/usr/local/miniconda/lib/python3.9/site-packages/liftoff/run_liftoff.py", line 47, in run_all_liftoff_steps
    write_new_gff.write_new_gff(lifted_feature_list, args, feature_db)
  File "/usr/local/miniconda/lib/python3.9/site-packages/liftoff/write_new_gff.py", line 17, in write_new_gff
    write_header(f, out_type)
  File "/usr/local/miniconda/lib/python3.9/site-packages/liftoff/write_new_gff.py", line 5, in write_header
    f.write("# " + " ".join(sys.argv) + "\n")

My installation of liftoff was painless and appears to run okay in a singularity container;

https://github.com/martinjvickers/install_scripts/blob/master/deployed/liftoff.def

The reference genome I'm lifting from is here https://urgi.versailles.inra.fr/download/pea/ and the assembly I'm lifting onto has contig naming in the following form;

$ cat assembly.fasta | grep ">" | head
>PGA_scaffold1__307_contigs__length_649373171
>PGA_scaffold2__258_contigs__length_564706688
>PGA_scaffold3__267_contigs__length_537943355
>PGA_scaffold4__238_contigs__length_533109984
>PGA_scaffold5__272_contigs__length_514891642
>PGA_scaffold6__248_contigs__length_511257990
>PGA_scaffold7__257_contigs__length_466982242
>ptg000030l__unscaffolded
>ptg000032l___fragment_2___debris__unscaffolded
>ptg000032l___fragment_3__unscaffolded

Do you have any idea what might be causing this issue?

Ah! I realise what the issue is, I didn't specify an -o output file. I had assumed from the following in the documentation and that it didn't force me to specify an output file that is was optional.

Output:
  -o FILE             write output to FILE in GFF3 format; by default, output
                      is written to terminal (stdout)