Missing from the matrix. Still in the genome.
Recore searches every empty cell of a pangenome matrix in the assemblies, puts back the genes that are really there, and keeps the evidence for each one.
Reads your pangenome and the assemblies. Writes a corrected matrix and a report. Never edits your files.
Install
Two commands. Recore uses minimap2 to search.
Your command
Pick what you have. Copy the command.
Or try it first
Twelve genomes with eleven false absences planted in them. About a minute.
$ curl -sO https://raw.githubusercontent.com/PathoGenOmics-Lab/recore/main/benchmarks/make_tutorial_dataset.py $ python3 make_tutorial_dataset.py --out tutorial_data $ recore -p tutorial_data/gene_presence_absence.csv \ -r tutorial_data/pan_genome_reference.fa \ -g tutorial_data/genomes -a tutorial_data/annotations --synteny \ --tree tutorial_data/species.tree --write-html-report -o tutorial_out
Then open tutorial_out/recore_report.html. Want the story behind each number? Read the walkthrough.
gene_presence_absence_recore.csv
The corrected matrix, in the input's format (and as .Rtab). Feed it to your next tool.
gene_presence_absence_recore_states.csv
The same matrix with a state in every cell: input, put back, kept out and why. For figures.
orthology_evidence.tsv
One row per change: the evidence, the decision, and wording you can use in a paper.
recore_report.html
The whole run in one page that works offline. Open it in any browser.
Explore the report
This one comes from the example run, on synthetic data: twelve made-up genomes with eleven planted absences. Click around.
The report is made for a large screen. This one is the example run's, on synthetic data.
Open it full screen ↗One setting that matters
--matrix-policy picks which evidence reaches the corrected matrix. All of it stays in the audit files.
If something looks off
The questions people ask first.
It says minimap2 was not found
Recore runs minimap2 for every search. Install it (step 1) and check that minimap2 --version works in the same terminal.
It finds no genome files, or no GFF matches a genome
Name each file after its column in the matrix: column L1_AS00101 reads genomes/L1_AS00101.fasta and annotations/L1_AS00101.gff. FASTA can end in .fasta, .fa or .fna, GFF in .gff or .gff3, gzipped or not.
It rescued nothing
Read the Gaps: line of the log. Genes in fewer than 10% of genomes are not searched; --min-prevalence 0 searches them all. Check the file names (above), and use --preset asm20 for divergent species.
Will it change my matrix or my GFFs?
No. It reads them and writes everything new into the output folder, recore_output/ unless you pass -o.
How long does it take, and how much memory?
800 genomes of 4.9 Mb take about 20 seconds on a laptop with 8 threads and about half a gigabyte of memory, which grows by about 0.5 MB per genome. The measurements.
Can I try another policy without searching again?
Yes. Add --search-cache cache/ to both runs: the second one aligns only what changed.
How do I describe it in a paper?
For the default policy: We used Recore with the balanced matrix policy, which rescues full-length false absences while retaining partial or disrupted homologues as multistate audit-only evidence.
Open source, on GitHub
Read the code, follow the releases, ask a question or report a bug.