faircloth-lab / phyluce

software for UCE (and general) phylogenomics
http://phyluce.readthedocs.org/
Other
78 stars 49 forks source link

issue with abyss assembly: AttributeError: 'Seq' object has no attribute 'tostring' #180

Closed kkmills closed 3 years ago

kkmills commented 4 years ago

I was able to assemble all of my individuals with velvet, but I am now trying to use abyss with the same data and getting this output:

(phyluce) kendall@DESKTOP-NOSAIQH:~/marmot-uces$ phyluce_assembly_assemblo_abyss --config assembly-config --output abyss-assemblies --clean --cores 2 -
-log-path log --kmer 60
2019-12-12 13:20:45,511 - phyluce_assembly_assemblo_abyss - INFO - ============ Starting phyluce_assembly_assemblo_abyss ===========
2019-12-12 13:20:45,512 - phyluce_assembly_assemblo_abyss - INFO - Version: git fatal: not a git repository: '/home/kendall/miniconda2/envs/phyluce/lib/python2.7/site-packages/.git'
2019-12-12 13:20:45,514 - phyluce_assembly_assemblo_abyss - INFO - Argument --abyss_se: False
2019-12-12 13:20:45,515 - phyluce_assembly_assemblo_abyss - INFO - Argument --clean: True
2019-12-12 13:20:45,522 - phyluce_assembly_assemblo_abyss - INFO - Argument --config: /home/kendall/marmot-uces/assembly-config
2019-12-12 13:20:45,523 - phyluce_assembly_assemblo_abyss - INFO - Argument --cores: 2
2019-12-12 13:20:45,524 - phyluce_assembly_assemblo_abyss - INFO - Argument --dir: None
2019-12-12 13:20:45,525 - phyluce_assembly_assemblo_abyss - INFO - Argument --kmer: 60
2019-12-12 13:20:45,526 - phyluce_assembly_assemblo_abyss - INFO - Argument --log_path: /home/kendall/marmot-uces/log
2019-12-12 13:20:45,527 - phyluce_assembly_assemblo_abyss - INFO - Argument --output: /home/kendall/marmot-uces/abyss-assemblies
2019-12-12 13:20:45,528 - phyluce_assembly_assemblo_abyss - INFO - Argument --subfolder:
2019-12-12 13:20:45,528 - phyluce_assembly_assemblo_abyss - INFO - Argument --verbosity: INFO
2019-12-12 13:20:45,529 - phyluce_assembly_assemblo_abyss - INFO - Getting input filenames and creating output directories
2019-12-12 13:20:46,322 - phyluce_assembly_assemblo_abyss - INFO - -------------- Processing marmota_baibacina_OB23930 -------------
2019-12-12 13:20:46,324 - phyluce_assembly_assemblo_abyss - INFO - Finding fastq/fasta files
2019-12-12 13:20:46,357 - phyluce_assembly_assemblo_abyss - INFO - File type is fastq
2019-12-12 13:20:46,359 - phyluce_assembly_assemblo_abyss - INFO - Running abyss-pe against data
2019-12-12 13:25:34,768 - phyluce_assembly_assemblo_abyss - INFO - Symlinking assembled contigs into /home/kendall/marmot-uces/abyss-assemblies/contigs
2019-12-12 13:25:34,770 - phyluce_assembly_assemblo_abyss - INFO - -------------- Processing marmota_baibacina_OB25269 -------------
2019-12-12 13:25:34,789 - phyluce_assembly_assemblo_abyss - INFO - Finding fastq/fasta files
2019-12-12 13:25:34,861 - phyluce_assembly_assemblo_abyss - INFO - File type is fastq
2019-12-12 13:25:34,864 - phyluce_assembly_assemblo_abyss - INFO - Running abyss-pe against data
2019-12-12 13:27:13,927 - phyluce_assembly_assemblo_abyss - INFO - Symlinking assembled contigs into /home/kendall/marmot-uces/abyss-assemblies/contigs
2019-12-12 13:27:13,930 - phyluce_assembly_assemblo_abyss - INFO - -------------- Processing marmota_baibacina_OB25270 -------------
2019-12-12 13:27:13,931 - phyluce_assembly_assemblo_abyss - INFO - Finding fastq/fasta files
2019-12-12 13:27:14,061 - phyluce_assembly_assemblo_abyss - INFO - File type is fastq
2019-12-12 13:27:14,064 - phyluce_assembly_assemblo_abyss - INFO - Running abyss-pe against data
Traceback (most recent call last):
  File "/home/kendall/miniconda2/envs/phyluce/bin/phyluce_assembly_assemblo_abyss", line 323, in <module>
    main()
  File "/home/kendall/miniconda2/envs/phyluce/bin/phyluce_assembly_assemblo_abyss", line 314, in main
    contigs_file = convert_abyss_contigs_to_velvet(contigs_file)
  File "/home/kendall/miniconda2/envs/phyluce/bin/phyluce_assembly_assemblo_abyss", line 246, in convert_abyss_contigs_to_velvet
    seqstring = seq.seq.tostring()
AttributeError: 'Seq' object has no attribute 'tostring'

The first two seem to have gone fine, and there are results for them in the contigs folder, but it is getting hung up on the third one. I have tried shuffling the config file several times so that it is assembling individuals in different orders, and it seems to always be failing when it reaches one with a higher number of reads (> 2.5M). This is the config file from my first run:

[samples]
marmota_baibacina_OB23930:~/marmot-uces/clean-uces/marmota_baibacina_OB23930/split-adapter-quality-trimmed
marmota_baibacina_OB25269:~/marmot-uces/clean-uces/marmota_baibacina_OB25269/split-adapter-quality-trimmed
marmota_baibacina_OB25270:~/marmot-uces/clean-uces/marmota_baibacina_OB25270/split-adapter-quality-trimmed
marmota_bobak_OB23908:~/marmot-uces/clean-uces/marmota_bobak_OB23908/split-adapter-quality-trimmed
marmota_bobak_OB24456:~/marmot-uces/clean-uces/marmota_bobak_OB24456/split-adapter-quality-trimmed
marmota_bobak_OB35663:~/marmot-uces/clean-uces/marmota_bobak_OB35663/split-adapter-quality-trimmed
marmota_camtschatica_OB23764:~/marmot-uces/clean-uces/marmota_camtschatica_OB23764/split-adapter-quality-trimmed
marmota_camtschatica_OB23901:~/marmot-uces/clean-uces/marmota_camtschatica_OB23901/split-adapter-quality-trimmed
marmota_camtschatica_OB23977:~/marmot-uces/clean-uces/marmota_camtschatica_OB23977/split-adapter-quality-trimmed
marmota_camtschatica_OB24676:~/marmot-uces/clean-uces/marmota_camtschatica_OB24676/split-adapter-quality-trimmed
marmota_caudata_UF26566:~/marmot-uces/clean-uces/marmota_caudata_UF26566/split-adapter-quality-trimmed
marmota_caudata_UF26567:~/marmot-uces/clean-uces/marmota_caudata_UF26567/split-adapter-quality-trimmed
marmota_caudata_UF26569:~/marmot-uces/clean-uces/marmota_caudata_UF26569/split-adapter-quality-trimmed
marmota_himalayana_OB26974:~/marmot-uces/clean-uces/marmota_himalayana_OB26974/split-adapter-quality-trimmed
marmota_himalayana_RSH4478:~/marmot-uces/clean-uces/marmota_himalayana_RSH4478/split-adapter-quality-trimmed
marmota_kastschenkoi_OB24436:~/marmot-uces/clean-uces/marmota_kastschenkoi_OB24436/split-adapter-quality-trimmed
marmota_kastschenkoi_OB24437:~/marmot-uces/clean-uces/marmota_kastschenkoi_OB24437/split-adapter-quality-trimmed
marmota_marmota_M00018:~/marmot-uces/clean-uces/marmota_marmota_M00018/split-adapter-quality-trimmed
marmota_marmota_OB24500:~/marmot-uces/clean-uces/marmota_marmota_OB24500/split-adapter-quality-trimmed
marmota_marmota_OB24504:~/marmot-uces/clean-uces/marmota_marmota_OB24504/split-adapter-quality-trimmed
marmota_menzbieri_OB23863:~/marmot-uces/clean-uces/marmota_menzbieri_OB23863/split-adapter-quality-trimmed
marmota_menzbieri_OB25305:~/marmot-uces/clean-uces/marmota_menzbieri_OB25305/split-adapter-quality-trimmed
marmota_monax_UAM92626:~/marmot-uces/clean-uces/marmota_monax_UAM92626/split-adapter-quality-trimmed
marmota_monax_UAM134826:~/marmot-uces/clean-uces/marmota_monax_UAM134826/split-adapter-quality-trimmed

Do you have any idea what might be causing this?

josefbenito commented 4 years ago

I am getting the exact same issue. Dr. Faircloth, could you please reply to us ?

Hello kkmills, were you able to solve this issue on your end ?

brantfaircloth commented 4 years ago

See if editing line 246 in /home/kendall/miniconda2/envs/phyluce/bin/phyluce_assembly_assemblo_abyss so that it looks like the following fixes the problem:

seqstring = str(seq.seq)

Once you do that, the 3 lines around that point should look like:

seqstring = str(seq.seq)
seqstring = seqstring.replace(degen, "N")
seq.seq = Seq(seqstring)

The issue arises because biopython changed the way you convert a sequence object into a string. The code you're replacing worked in older versions of biopython, but fails in newer versions of biopython.

Another workaround, for now, is to use phyluce_assembly_assemblo_spades.

josefbenito commented 4 years ago

Thanks Dr. Faircloth. It worked ! I have one other question/issue. The code completed running successfully. It made the 'out_k60-contigs.fa' and the 'out_k60-contigs-velvet.fa' files. However, the 'contigs.fasta' file and the 'genus-species.contigs.fasta' file it made inside the contigs folder are empty. Any idea why ?

brantfaircloth commented 4 years ago

i'm not sure what happened - these should be symlinks to the assembled contigs...

josefbenito commented 4 years ago

Ok. I can use the 'out_K60-contigs-velvet.fa' file for my down processing analysis, correct ?