# jenniferlu717/krakentools architecture

> Architecture diagram of the GitHub repository jenniferlu717/krakentools, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jenniferlu717/krakentools
- Repository: https://github.com/jenniferlu717/krakentools

## Overview

KrakenTools is a command-line toolkit for downstream processing of Kraken-family and Bracken metagenomic classification results. Users can extract reads by taxonomy ID, combine and convert reports, calculate diversity metrics, filter Bracken results, and construct reports from Kraken output and taxonomy data. The graph preserves these as distinct, mostly independent workflows rather than implying one mandatory pipeline. Edges reflect documented inputs, outputs, and conversions; unsampled implementations are represented by their exact script paths without inferring additional internal calls.

Main entry points: [`fix_unmapped.py`](https://github.com/jenniferlu717/krakentools/blob/master/fix_unmapped.py) (Map accessions), [`extract_kraken_reads.py`](https://github.com/jenniferlu717/krakentools/blob/master/extract_kraken_reads.py) (Extract reads), [`make_kreport.py`](https://github.com/jenniferlu717/krakentools/blob/master/make_kreport.py) (Build Kraken report), [`combine_kreports.py`](https://github.com/jenniferlu717/krakentools/blob/master/combine_kreports.py) (Combine reports)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_read_workflow["Read extraction"]
  node_extract_reads["Extract reads"]
end

subgraph group_report_workflow["Report processing"]
  node_combine_reports["Combine reports"]
  node_report_to_krona["Convert to Krona<br/>[kreport2krona.py]"]
  node_report_to_mpa["Convert to MetaPhlAn<br/>[kreport2mpa.py]"]
  node_combine_mpa["Combine MetaPhlAn<br/>[combine_mpa.py]"]
  node_filter_bracken["Filter Bracken output"]
end

subgraph group_taxonomy_workflow["Taxonomy tools"]
  node_make_taxonomy["Build taxonomy<br/>[make_ktaxonomy.py]"]
  node_make_report["Build Kraken report<br/>[make_kreport.py]"]
  node_fix_unmapped["Map accessions<br/>[fix_unmapped.py]"]
end

subgraph group_analysis_workflow["Abundance analysis"]
  node_alpha_diversity["Alpha diversity<br/>[alpha_diversity.py]"]
  node_beta_diversity["Beta diversity<br/>[beta_diversity.py]"]
end

node_analyst(("KrakenTools user"))
node_kraken_results["Kraken results"]
node_sequence_files["FASTA/FASTQ reads"]
node_extracted_reads["Extracted reads"]
node_kraken_reports["Kraken reports"]
node_combined_report["Combined report"]
node_krona_report["Krona-format report"]
node_mpa_report["MetaPhlAn-format report"]
node_combined_mpa["Combined MetaPhlAn report"]
node_bracken_output["Bracken output"]
node_filtered_bracken["Filtered Bracken output"]
node_alpha_input["Bracken abundance input"]
node_alpha_metrics["Alpha diversity metrics"]
node_beta_inputs["Community abundance inputs"]
node_beta_matrix["Bray-Curtis matrix"]
node_taxonomy_sources["NCBI taxonomy files"]
node_taxonomy_file["Condensed taxonomy"]
node_accessions["Accession IDs"]
node_accession_maps["Accession-to-taxid maps"]
node_mapped_accessions["Mapped accessions"]
node_unmapped_accessions["Unmapped accessions"]

node_analyst -->|"runs"| node_extract_reads
node_kraken_results -->|"reads classifications"| node_extract_reads
node_sequence_files -->|"provides reads"| node_extract_reads
node_extract_reads -->|"writes extracted reads"| node_extracted_reads
node_analyst -->|"runs"| node_combine_reports
node_kraken_reports -->|"combines"| node_combine_reports
node_combine_reports -->|"writes combined report"| node_combined_report
node_analyst -->|"runs"| node_report_to_krona
node_kraken_reports -->|"converts report"| node_report_to_krona
node_report_to_krona -->|"writes Krona format"| node_krona_report
node_analyst -->|"runs"| node_report_to_mpa
node_kraken_reports -->|"converts report"| node_report_to_mpa
node_report_to_mpa -->|"writes MetaPhlAn format"| node_mpa_report
node_analyst -->|"runs"| node_combine_mpa
node_mpa_report -->|"combines reports"| node_combine_mpa
node_combine_mpa -->|"writes combined report"| node_combined_mpa
node_analyst -->|"runs"| node_filter_bracken
node_bracken_output -->|"filters taxids"| node_filter_bracken
node_filter_bracken -->|"writes filtered output"| node_filtered_bracken
node_analyst -->|"runs"| node_make_taxonomy
node_taxonomy_sources -->|"provides taxonomy data"| node_make_taxonomy
node_make_taxonomy -->|"writes taxonomy"| node_taxonomy_file
node_analyst -->|"runs"| node_make_report
node_kraken_results -->|"provides classifications"| node_make_report
node_taxonomy_file -->|"provides taxonomy"| node_make_report
node_make_report -->|"writes report"| node_kraken_reports
node_analyst -->|"runs"| node_fix_unmapped
node_accessions -->|"provides IDs"| node_fix_unmapped
node_accession_maps -->|"provides mappings"| node_fix_unmapped
node_fix_unmapped -->|"writes mapped IDs"| node_mapped_accessions
node_fix_unmapped -->|"writes unresolved IDs"| node_unmapped_accessions
node_analyst -->|"runs"| node_alpha_diversity
node_alpha_input -->|"provides abundances"| node_alpha_diversity
node_alpha_diversity -->|"calculates indices"| node_alpha_metrics
node_analyst -->|"runs"| node_beta_diversity
node_beta_inputs -->|"provides communities"| node_beta_diversity
node_beta_diversity -->|"calculates dissimilarity"| node_beta_matrix

click node_extract_reads "https://github.com/jenniferlu717/krakentools/blob/master/extract_kraken_reads.py"
click node_combine_reports "https://github.com/jenniferlu717/krakentools/blob/master/combine_kreports.py"
click node_report_to_krona "https://github.com/jenniferlu717/krakentools/blob/master/kreport2krona.py"
click node_report_to_mpa "https://github.com/jenniferlu717/krakentools/blob/master/kreport2mpa.py"
click node_combine_mpa "https://github.com/jenniferlu717/krakentools/blob/master/combine_mpa.py"
click node_filter_bracken "https://github.com/jenniferlu717/krakentools/blob/master/filter_bracken.out.py"
click node_make_taxonomy "https://github.com/jenniferlu717/krakentools/blob/master/make_ktaxonomy.py"
click node_make_report "https://github.com/jenniferlu717/krakentools/blob/master/make_kreport.py"
click node_fix_unmapped "https://github.com/jenniferlu717/krakentools/blob/master/fix_unmapped.py"
click node_alpha_diversity "https://github.com/jenniferlu717/krakentools/blob/master/DiversityTools/alpha_diversity.py"
click node_beta_diversity "https://github.com/jenniferlu717/krakentools/blob/master/DiversityTools/beta_diversity.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_extract_reads,node_analyst toneBlue
class node_combine_reports,node_report_to_krona,node_report_to_mpa,node_combine_mpa,node_filter_bracken toneAmber
class node_make_taxonomy,node_make_report,node_fix_unmapped toneMint
class node_alpha_diversity,node_beta_diversity toneRose
class node_kraken_results,node_sequence_files,node_extracted_reads,node_kraken_reports,node_combined_report,node_krona_report,node_mpa_report,node_combined_mpa,node_bracken_output,node_filtered_bracken,node_alpha_input,node_alpha_metrics,node_beta_inputs,node_beta_matrix,node_taxonomy_sources,node_taxonomy_file,node_accessions,node_accession_maps,node_mapped_accessions,node_unmapped_accessions toneIndigo
```

## Components

### Read extraction

- [Extract reads](https://github.com/jenniferlu717/krakentools/blob/master/extract_kraken_reads.py): `extract_kraken_reads.py`

### Report processing

- [Combine reports](https://github.com/jenniferlu717/krakentools/blob/master/combine_kreports.py): `combine_kreports.py`
- [Convert to Krona](https://github.com/jenniferlu717/krakentools/blob/master/kreport2krona.py): `kreport2krona.py`
- [Convert to MetaPhlAn](https://github.com/jenniferlu717/krakentools/blob/master/kreport2mpa.py): `kreport2mpa.py`
- [Combine MetaPhlAn](https://github.com/jenniferlu717/krakentools/blob/master/combine_mpa.py): `combine_mpa.py`
- [Filter Bracken output](https://github.com/jenniferlu717/krakentools/blob/master/filter_bracken.out.py): `filter_bracken.out.py`

### Taxonomy tools

- [Build taxonomy](https://github.com/jenniferlu717/krakentools/blob/master/make_ktaxonomy.py): `make_ktaxonomy.py`
- [Build Kraken report](https://github.com/jenniferlu717/krakentools/blob/master/make_kreport.py): `make_kreport.py`
- [Map accessions](https://github.com/jenniferlu717/krakentools/blob/master/fix_unmapped.py): `fix_unmapped.py`

### Abundance analysis

- [Alpha diversity](https://github.com/jenniferlu717/krakentools/blob/master/DiversityTools/alpha_diversity.py): `DiversityTools/alpha_diversity.py`
- [Beta diversity](https://github.com/jenniferlu717/krakentools/blob/master/DiversityTools/beta_diversity.py): `DiversityTools/beta_diversity.py`

### Other components

- **KrakenTools user**
- **Kraken results**
- **FASTA/FASTQ reads**
- **Extracted reads**
- **Kraken reports**
- **Combined report**
- **Krona-format report**
- **MetaPhlAn-format report**
- **Combined MetaPhlAn report**
- **Bracken output**
- **Filtered Bracken output**
- **Bracken abundance input**
- **Alpha diversity metrics**
- **Community abundance inputs**
- **Bray-Curtis matrix**
- **NCBI taxonomy files**
- **Condensed taxonomy**
- **Accession IDs**
- **Accession-to-taxid maps**
- **Mapped accessions**
- **Unmapped accessions**

## Connections

- KrakenTools user → Extract reads: runs
- Kraken results → Extract reads: reads classifications
- FASTA/FASTQ reads → Extract reads: provides reads
- Extract reads → Extracted reads: writes extracted reads
- KrakenTools user → Combine reports: runs
- Kraken reports → Combine reports: combines
- Combine reports → Combined report: writes combined report
- KrakenTools user → Convert to Krona: runs
- Kraken reports → Convert to Krona: converts report
- Convert to Krona → Krona-format report: writes Krona format
- KrakenTools user → Convert to MetaPhlAn: runs
- Kraken reports → Convert to MetaPhlAn: converts report
- Convert to MetaPhlAn → MetaPhlAn-format report: writes MetaPhlAn format
- KrakenTools user → Combine MetaPhlAn: runs
- MetaPhlAn-format report → Combine MetaPhlAn: combines reports
- Combine MetaPhlAn → Combined MetaPhlAn report: writes combined report
- KrakenTools user → Filter Bracken output: runs
- Bracken output → Filter Bracken output: filters taxids
- Filter Bracken output → Filtered Bracken output: writes filtered output
- KrakenTools user → Build taxonomy: runs
- NCBI taxonomy files → Build taxonomy: provides taxonomy data
- Build taxonomy → Condensed taxonomy: writes taxonomy
- KrakenTools user → Build Kraken report: runs
- Kraken results → Build Kraken report: provides classifications
- Condensed taxonomy → Build Kraken report: provides taxonomy
- Build Kraken report → Kraken reports: writes report
- KrakenTools user → Map accessions: runs
- Accession IDs → Map accessions: provides IDs
- Accession-to-taxid maps → Map accessions: provides mappings
- Map accessions → Mapped accessions: writes mapped IDs
- Map accessions → Unmapped accessions: writes unresolved IDs
- KrakenTools user → Alpha diversity: runs
- Bracken abundance input → Alpha diversity: provides abundances
- Alpha diversity → Alpha diversity metrics: calculates indices
- KrakenTools user → Beta diversity: runs
- Community abundance inputs → Beta diversity: provides communities
- Beta diversity → Bray-Curtis matrix: calculates dissimilarity
