Adding the sylph coverage model to yacht - #141
Conversation
…ate effective coverage, etc according to sylph (Shaw and Yu, 2024).
… that aren't necessary.
… print statements with logger. Moved all constants to utils.py.
|
After some more testing, I just pushed some additional updates to this branch.
|
|
A small update, but with my most recent commit from last night I made the promised change to the |
|
Hi All! I've made some more changes over the past week. Here's an overview of my most recent updates (Part 1 of 2):
|
…takes-all k-mer reassignment.
…ion due to low lambda.
…pdate to median_ani_threshold.
|
…S, replacing it with the system gzip
…--calculate-coverage and --no_two_pass.
|
Hi all! I made more updates to this branch (along with a decent amount of testing) as we discussed and the code is ready for your review.
|
|
Hi team! |
…nomes during yacht convert.
…late_coverage sheets. Added various handling improvements, including a clear help message.
|
Good morning all! Over the past few days I have made updates to
Note that I didn't change anything about the format of the .cami output file, including the These updates to Please let me know what you think, and if you have any questions or concerns. |
…e median lambda as fallback coverage.
|
Good afternoon all! I made a few more updates to a new version of superyacht,
These updates give us more flexibility for usage and hopefully some more sensitivity. |
|
|
Good afternoon! I completed a thorough optimization of the The top-line summary is that this update ( This optimization took the form of: a performance overhaul of
Worth noting: instead of each genome's k-mers being extracted from the sketch four times, this extraction is only done once. Overall, these changes resulted in a ~3.4X speedup in the back-half (that is, the Superyacht-derived part) of One caveat to mention: to break ties, when two genomes have an exactly equal ANI for a given shared k-mer, the winner is selected arbitrarily via array order. This hasn't changed in this code, but it isn't deterministic because the results table is generated from separate workers. I can update it if we need to by making tie-breaking deterministic. Finally, I left the timings I used to measure performance in the codebase but commented them out. This is only 20 lines of code overall and I can (and will) remove them once we're satisfied with the update. |





Hi @dkoslicki and team!
I created a sylph coverage model from Shaw and Yu, 2024 and added it to yacht, in a branch I named superyacht just for fun.
This is a draft that I'm still testing, so that and other caveats still apply. A few notes:
cov_calc, which calculates lambda and ani according as specified by the sylph paper.cov_calcinsideget_exclusive_hashes, given that that function provides us with the signature objects needed to make the calculations.hypothesis_recovery. There are probably good ways to integrate this, and I'll give this some more thought.cov_calcmore deeply intohypothesis_recoveryfor now. I have some ideas on what might be the best approach that we could discuss if you'd like. I thought it would be best to share this new branch while I look into this more deeply.internal_superyacht_test.pyis just a script that I have been using to test the new branch, and this can be ignored; I'll remove it once we move towards publication.AdjustStatusLambdaenum in a more idiomatic python way this week. It should be a relatively quick fix.winner_maproutine from sylph, but it's something I would like to add.I'm going to do more testing this week on additional datasets. Happy to discuss here or via email/video!