I was wondering if you would like to have this fea...
# metatdenovo
m
I was wondering if you would like to have this feature request to keep things more organized in case someone(!) runs against multiple databases. https://github.com/m3hdad/metatdenovo/commit/efdea83b8da79a7b8f1ffa0a005ba735fd2f3653 `nextflow run m3hdad/metatdenovo -r request/eukulele-dbname -profile singularity,test_megahit_transdecoder --skip_eukulele false --eukulele_db phylodb --eukulele_dbpath "/path/to/eukulele/phylodb`"
Copy code
eukulele/
├── megahit.transdecoder_phylodb
│   ├── mets_full
│   │   └── diamond
│   ├── taxonomy_counts
│   │   ├── megahit.transdecoder_phylodb_all_class_counts.csv.gz
│   │   ├── megahit.transdecoder_phylodb_all_family_counts.csv.gz
│   │   ├── megahit.transdecoder_phylodb_all_genus_counts.csv.gz
│   │   ├── megahit.transdecoder_phylodb_all_order_counts.csv.gz
│   │   ├── megahit.transdecoder_phylodb_all_species_counts.csv.gz
│   │   └── megahit.transdecoder_phylodb_all_supergroup_counts.csv.gz
│   └── taxonomy_estimation
│       └── proteins-estimated-taxonomy.out.gz
└── versions.yml

5 directories, 8 files
d
I'm all for a better organized output directory. To excuse myself from the mess, we've been focused on the output in the
<output>/summary_tables
directory. If you haven't checked it out, please do. There, we try to output nicely formatted tsv tables with normalized column names etc. for use in downstream analyses. The rest of the directory structure should still be well organized of course.
m
Thanks, nicely organized summary_tables. I just noticed the outputs get overwritten during reruns in eukulele outdir.
d
Please make a PR. I have one open too if you don't mind reviewing. (This is merged now.) I think I will make a release relatively soon, but I'll wait until you're done with the organizing so please let me know when you think it's time.
m
Great. I'm just testing if eukprot issue is fixed in eukulele2.0.9 release.
d
Right. I don't think it is. @Danilo Di Leo tried this release and I think he found that it's still not working. We have a new module for taxonomy now, using Diamond (
--diamond_dbs
). For this one would have to make one's own EukProt database. I'm interested in this and have space to make it available for everyone, so maybe we could collaborate on this?
m
sure, I'm trying to test
--diamond_dbs
but I can't get to mk the dmnd db. It fails and need to understand why.
Copy code
Writing accessions...  [0.406s]
Hashing sequences...  [0.424s]
Loading sequences...  [0s]
Writing trailer...  [16.515s]

Accession parsing rules triggered for database seqids (use --no-parse-seqids to disable):
 UniRef prefix  0
gi|xxx| prefix  0
   xxx| prefix  17226
   |xxx suffix  17226
   .xxx suffix  706875168
  :PDB= suffix  0

Loading taxonomy names...  [1.021s]
Loaded taxonomy names for 2657297 taxon ids.
Loading taxonomy mapping file...  [1388.53s]
Joining accession mapping...  [1794.18s]
Writing taxon id list...  [54.327s]

Accession parsing rules triggered for mapping file seqids (use --no-parse-seqids to disable):
 UniRef prefix  0
gi|xxx| prefix  0
   xxx| prefix  0
   |xxx suffix  0
   .xxx suffix  8200974268
  :PDB= suffix  13

Error: Invalid taxonomic rank: domain
ERROR: Diamond database creation failed
d
Right. I notice that in my taxonomy dump for GTDB (made with taxonkit) I have
superkingdom
in
nodes.dmp
and not
domain
, i.e. NCBI style.
See also https://github.com/bbuchfink/diamond/issues/352, particularly the comment from 3 weeks ago: "It should be possible to just add "domain" and "realm" as ranks in the next release, if that helps." and "@CWYuan08 Like this probably until I provide a patch: #866".
m
alright, I made it work, I guess in the current version there are more terms that diamond is confused about:
Copy code
content_fixed = (content.replace("acellular root", "superkingdom")
                                  .replace("cellular root", "superkingdom")
                                  .replace("domain", "superkingdom")
                                  .replace("realm", "superkingdom"))
d
Maybe you should let the Diamond guy know?
It's funny that Diamond doesn't just have a command line param for this. But maybe the code is too intricate for that...