Fork of CCTyper, a tool to predict CRISPR arrays and cas genes in bacterial genome sequences. This fork aims to replace the core depencencies of CCTyper with more efficient reimplementations to reduce waiting times 🕰️⬇️ and energy use 🔌🌳.
The main tools that are replaced are:
| Original | Replacement | Implemented |
|---|---|---|
| Prodigal | Pyrodigal | ✅ |
| HMMer | PyHMMER | ✅ |
| MinCED | Diced | ❌ |
These are reimplementations of the original code to run more efficiently. They should produce identical output while using less resources. (Big thanks to @althonos!)
The program CCTyper starts by identifying cas genes in your input sequences. It does this using Prodigal to predict Open Reading Frames (ORFs), and then screen these using HMMer against a database of known cas genes. These are actually the most compute intensive steps in the whole process and take about 20 and 75% of the total runtime, respectively.
Next up is the identification of CRISPR arrays, by looking for direct repeats. This is done with MinCED, which is based on the trusty old CRT. This takes only about 1% of the total runtime, so a potential speed up here will only have a minor effect.
By replacing each of these tools with an optimised replacement, I hope to improve the general effeciency of the tool and improve the feasibility of large-scale CRISPR-Cas identification in datasets of hundreds of thousands of bacterial genomes.
Despite changing the core modules of CCTyper, I want to ensure that the output remains identical. Therefore, benchmarks will evaluate output files as well as runtime and use of computational resources.
Benchmark of total runtime.
From left to right, different tool variants are displayed as panels: the original CCTyper,
CCTyper with Pyrodigal implemented, and with PyHMMER implemented.
Top to bottom shows two different datasets: 100 randomly selected Campylobacter genomes
and 100 randomly selected CRISPR-Cas-containing genomes.
Benchmarks were run with 1, 4 and 8 CPU threads.
See the documentation for more details of the benchmark.
This tool can only exist thanks to the work of: