KTCLASSIFYBLAST(1)

πŸ‘‘ ktClassifyBLAST β€” from the ktClassifyBLAST(1) manual, bestie edition 🧚

okay so. sit down, grab a strawberry, because we're about to talk about ktClassifyBLAST and it is genuinely giving main character energy. this is a User Commands page, and the version we're vibing with is ktClassifyBLAST 2.8 from June 2021. more on that at the very end, stay with me πŸ’–


✨ NAME ✨

ktClassifyBLAST β€” explore hierarchical metagenomic data with zoomable pie charts 🌈

yes, the NAME section really does say "zoomable pie charts" and honestly? iconic. we keep it.


πŸ¦‹ DESCRIPTION πŸ¦‹

so here's the tea: ktClassifyBLAST assigns each query in tabular BLAST results to an NCBI taxonomy ID. that's the whole job. that's the mission.

and listen β€” if the results contain comment lines, then queries with no hits will still be included in the output, with taxonomy IDs of -1. that's for consistency with MEGAN, periodt. not me being nice about it, that's just literally how it works πŸ’…

here's how you call it:

ktClassifyBLAST \
  [options] \
  blast_output_1 \
  [blast_output_2] \
  ...

🌸 the arguments 🌸

  • blast_output β€” the file (or files) containing BLAST results in tabular format. when you're downloading from NCBI, this is the one labelled "Hit table (text)". and if you're running BLAST locally, heads up bestie: the subject IDs in your local database must contain accession numbers, either bare or in the fourth field of the pipe-separated format, like "gi|12345|xx|ABC123.1|". no accession numbers, no classification, iykyk.

πŸŽ€ OPTIONS πŸŽ€

one bullet per flag, no skips, no cuts, we are thorough in this house πŸ’œ

  • -o <string> β€” output file name. [Default: 'blast.taxonomy.tab']
  • -t <number> β€” the threshold for bit score differences when figuring out which hits count as "best". any hit whose score is within this distance of the highest score gets included when computing the lowest common ancestor (or picked randomly, if you passed -r). [Default: '3']
  • -f β€” if any of the best hits have unknown accessions, this forces classification to the root instead of just ignoring them. no silent ghosting here πŸ™ˆ
  • -r β€” pick randomly from the best hits instead of finding the lowest common ancestor. chaos mode, but make it science πŸ”₯
  • -p β€” use percent identity for the average scores instead of log[10] e-value.
  • -b β€” use bit score for the average scores instead of log[10] e-value.
  • -s β€” summarize counts and average scores by taxonomy ID.
  • -e <number> β€” the E-value factor for determining "best" hits. real talk though: a bit score difference threshold (-t) is recommended instead, because it saves you from comparing e-values that BLAST reports as 0 thanks to floating point underflow. 😭 however β€” and this is the plot twist β€” an e-value factor should be used if your input is a concatination of BLASTs against different databases. different databases, different rules, bestie.
⚠️ note that the manpage spells it "concatination" and we are respecting the original spelling, no cap.

πŸ’– OUTPUT FORMATS πŸ’–

default vibes:

<queryID> <taxID> <score>

summarized (-s) vibes:

<count> <taxID> <score>

🫢 what those fields even mean 🫢

  • queryID β€” the query ID exactly as it appears in the BLAST results. exactly. character for character. don't @ me.
  • taxID β€” the NCBI taxonomy ID the query got assigned to (or -1 if it has no hits at all πŸ₯Ί).
  • score β€” the score of the assignment(s). by default that's the average E-value of the "best" hits (see -p and -b if you wanna change that up).
  • count β€” the number of assignments.

⭐ a lil sign-off ⭐

that's the whole page, babe. this was ktClassifyBLAST 2.8, dated June 2021, living under the User Commands section of the manual β€” and now you know her. go classify something. slay πŸŽ€πŸ’…βœ¨