its-fun-2-map
A pipeline for processing fungal genome skims from museum specimens. Includes quality control, reference mapping (as a read-baiting step), assembly, BLAST taxonomic assignment, primer-based ITS region extraction, and validation.
Contents
- Installation and quick start
- Workflow
- Configuration
- Pipeline Overview
- Output Directory Structure
- Dependencies
- Authors
Installation and quick start
Everything the pipeline needs (tools, R, Python and their packages) are installed by the conda environment in its-fun-2-map.yaml. The only things you need to fetch yourself are the reference databases.
1. Install conda if you don't already have it.
2. Clone the repository and create the environment:
git clone https://github.com/museomics/its-fun-2-map.git
cd its-fun-2-map
conda env create -f its-fun-2-map.yaml
conda activate its-fun-2-map
3. Install the pipeline package into the activated environment:
pip install -e .
(or pip install its-fun-2-map to install from PyPI). The conda environment is still required either way, as the pipeline shells out to fastp, seqkit, bwa, samtools, BBMap, SPAdes, BLAST+ and R, none of which are pip-installable.
4. Download the reference databases from UNITE:
- UNITE Full "UNITE+INSD" - reference sequence retrieval (Step 2)
- UNITE General Release (sh_general_release_dynamic) - BLAST Round 1 (Step 5)
- UNITE UCHIME ITS2 reference dataset - BLAST Round 2a (Step 6)
- UNITE UCHIME ITS1 reference dataset - BLAST Round 2b (Step 7)
5. Check the install:
itsfun-qc --help
6. Prepare a tracking sheet (CSV or XLSX) with sample IDs and taxids - see Tracking Sheet Format.
7. Run the pipeline. All steps can be run sequentially with run_pipeline.sh: set your paths and parameters in its configurable parameters block, then run it. See the tutorial for a worked example.
Full version details for every dependency are in Dependencies.
Workflow
Configuration
Default Parameters
| Parameter | Default | Description |
|---|---|---|
MIN_LENGTH |
100 bp | Minimum sequence length for BLAST filtering |
MIN_PIDENT |
85% | Minimum percent identity for BLAST hits |
EVALUE_CUTOFF |
1e-5 | BLAST e-value threshold |
NUMBER_REFS |
40 | Number of reference sequences to retrieve |
TAX_RANK |
genus | Taxonomic rank for reference retrieval |
Tracking Sheet Format
The pipeline accepts CSV or XLSX tracking sheets with the following columns:
Required columns:
- Sample ID column (configurable via
--column_nameor--id_header) - Taxid column (for UNITEd step, configurable via
--taxid_header)
Optional but recommended columns:
forward/fwd- path to forward readsreverse/rev- path to reverse reads
If forward/reverse columns are present, file paths are read directly from the tracking sheet. Otherwise, files are searched for in the input directory using sample ID-based string matching.
For taxonomy validation:
Kingdom,Phylum,Class,Order,Family,Genus,Species- taxonomic hierarchy columns
If your spreadsheet doesn't contain taxonomic hierarchy columns, you can use the helper command itsfun-lineage. This will take any spreadsheet (both CSV and XLSX allowed) and queries all taxonomic IDs within in using NCBI Entrez. It then appends the taxonomic hierarchy columns to the spreadsheet. Outputs a log file and a CSV to your working directory for downstream use.
If using the pipeline shell script, this can be opted in by changing "need_lineage" to "YES" in Advanced Usage: Configurable paramaters.
## Configurable parameters
# itsfun-refs parameters
need_lineage="NO" #change to "YES" to use itsfun-lineage
Pipeline Overview
Raw Reads → QC → Reference Retrieval → Read Mapping → Assembly → BLAST Taxonomy Validation → ITS Extraction
All pipeline steps can be run sequentially using the run_pipeline.sh script.
Installing the package puts one command per pipeline step on your PATH, so steps can also be run individually from any directory:
| Command | Step | Module |
|---|---|---|
itsfun-qc |
1 - Quality control | fastp_module |
itsfun-refs |
2 - Pseudo-reference retrieval | UNITEd |
itsfun-map |
3 - Read mapping & baiting | mapping_module |
itsfun-assemble |
4 - Contig assembly | assembly_module |
itsfun-blast1 |
5 - BLASTn round 1 | blast_round1 |
itsfun-blast1-parse |
5.5 - Round 1 parsing & validation | blast_round1_parser |
itsfun-blast2 |
6, 7 - BLASTn round 2 (ITS2/ITS1) | blast_round2 |
itsfun-blast-parse |
6.5, 7.5 - Round 2 parsing & validation | blast_output_parser |
itsfun-extract |
8 - ITS primer binding & extraction | its_primer_binding |
itsfun-summary |
9 - Summary metrics aggregation | its_a_summary_compiler |
itsfun-lineage |
helper - add NCBI lineages to a tracking sheet | pull_ncbi_lineage |
Every command takes --help. Each is also runnable as a module, e.g.
python -m its_fun_2_map.fastp_module --help.
Step 1: Quality Control (itsfun-qc)
Quality control processing of raw paired-end reads using fastp with a two-stage approach.
- Input: Raw paired-end sequencing reads
- Output:
{sample}_trimmed_1.fq,{sample}_trimmed_2.fq- trimmed paired reads{sample}_merged.fq- merged overlapping reads{sample}_unmerged_1.fq,{sample}_unmerged_2.fq- reads that couldn't be merged{sample}_trim.json,{sample}_merge.json- QC metrics{sample}_overlaps.html- overlap distribution visualisationfastp_summary.csv- aggregated summary statistics
- Features:
- Adapter trimming and filtering (auto-detection for PE reads)
- Quality filtering (Q30 threshold by default, configurable via
--qualified_quality_phred) - Read merging (Minimum merged length: 30 bp)
- Read statistics generation
Parameters:
| Parameter | Default | Description |
|---|---|---|
--qualified_quality_phred |
30 | Phred score below which a base is counted as unqualified during trimming (fastp's -q). Note fastp's own default is 15 |
--threads |
4 | Number of samples processed in parallel (i.e. concurrent fastp processes) |
--fastp_threads |
3 | Worker threads used within each fastp process (fastp's -w). Matches fastp's own default |
--fastp_extra_args |
- | Additional arguments for the trimming fastp call, given as a single quoted string |
Note on threading.
--threadsand--fastp_threadsmultiply. Total worker threads is approximately--threads x --fastp_threads, so the default--threads 4uses around 12 threads, not 4. The effective figure is written to the log at startup. On a scheduler, set--threads $SLURM_CPUS_PER_TASK --fastp_threads 1to make the CPU request and actual usage match.
Note on
--fastp_extra_args. This argument takes one quoted string:--fastp_extra_args "--trim_front1 10 --trim_front2 10"It cannot be used to set
-q/--qualified_quality_phredor-w/--thread, which the module sets itself - use--qualified_quality_phredand--fastp_threadsinstead. Supplying either via--fastp_extra_argscauses the run to exit with an error before processing begins.
Step 2: Pseudo-Reference Sequence Retrieval (itsfun-refs)
Retrieves taxonomically relevant reference sequences from the UNITE database using NCBI taxonomy matching.
Process:
- Queries NCBI Entrez API for taxonomic lineage of each specimen
- Matches NCBI taxonomy against UNITE database taxonomy
- Extracts sequences based on user-specified parameters
- Supports fallback to higher taxonomic ranks if matches not found
Key Features:
-
Diversity mode: Distributes sequences across child taxa, prioritising target species matches (up to 25% of requested sequences)
-
Traverse mode: Searches up the taxonomic hierarchy to collect target number of sequences
-
Flexible matching: Case-insensitive matching with normalisation for species name variations
-
Input: Tracking sheet with specimen taxonomy
-
Output:
{sample_id}_seed.fasta- reference sequences for each specimen- Summary CSV with retrieval statistics
Parameters:
| Parameter | Default | Description |
|---|---|---|
--tax_rank |
- | Taxonomic rank to search (species/genus/family/order/class/phylum) |
--number |
- | Number of reference sequences to retrieve |
--diversity |
False | Distribute sequences across child taxa |
--traverse |
- | Maximum rank to traverse up to if insufficient sequences found |
--all |
False | Retrieve all matching sequences |
Step 3: Read Mapping & Baiting (itsfun-map)
Maps quality-filtered reads to retrieved reference sequences using BWA to enrich for target ITS regions. Supports both modern DNA (BWA-MEM) and ancient/historical DNA (BWA-ALN) alignment strategies.
Alignment Algorithms:
| Algorithm | Use Case | Parameters |
|---|---|---|
bwa-mem |
Modern/historical DNA | Default BWA-MEM settings with -M flag |
bwa-aln |
Ancient/historical DNA | -l 16500 -n 0.01 -o 2 (Green et al. 2010) |
Process:
- Automatically indexes reference FASTA files if not already indexed
- Maps merged reads (single-end mode)
- Maps unmerged read pairs (paired-end mode)
- Extracts mapped reads to FASTQ format
- Repairs paired-end read files to ensure synchronisation
- Generates mapping statistics
Parameters:
| Parameter | Default | Description |
|---|---|---|
--aligner |
- | BWA algorithm: bwa-mem or bwa-aln (required) |
--threads |
4 | Number of samples mapped in parallel (i.e. concurrent BWA jobs) |
--bwa_threads |
8 | Worker threads used within each BWA job (BWA's -t) |
Note on threading. As in Step 1,
--threadsand--bwa_threadsmultiply. Total worker threads is approximately--threads x --bwa_threads, so the defaults use around 32 threads, not 4. On a scheduler, set--threads $SLURM_CPUS_PER_TASK --bwa_threads 1to make the CPU request and actual usage match.
Input:
- Quality-filtered FASTQ files from Step 1 (
*_merged.fq,*_unmerged_1.fq,*_unmerged_2.fq) - Per-sample reference FASTA files from Step 2 (
*_seed.fasta)
Output:
{sample}_mapped.fastq- mapped merged reads{sample}_mapped_unmerged_1.fastq,{sample}_mapped_unmerged_2.fastq- mapped paired reads (repaired){sample}_mapped_flagstats.txt- alignment statistics for merged reads{sample}_unmerged_1_flagstats.txt,{sample}_unmerged_2_flagstats.txt- alignment statistics for paired readsmapping_summary.csv- aggregated mapping metrics for all samples
Step 4: Contig Assembly (itsfun-assemble)
Assembles mapped reads into contigs using SPAdes with a multi-stage fallback strategy to maximise assembly success.
Assembly Strategy:
| Stage | Method | K-mer Sizes | Description |
|---|---|---|---|
| Initial | Single-reads (i.e. merged) | 21,33,55 | Uses mapped merged reads only |
| Fallback 1 | Single-reads (i.e. merged) | 21 | Retries with minimal k-mer if initial fails |
| Fallback 2 | Merged + Unmerged PE | 21 | Uses all available reads if Fallback 1 fails |
Process:
- Attempts assembly with merged reads using default k-mer sizes
- If assembly fails or produces no valid scaffolds, retries with k=21 only
- If still unsuccessful, includes unmerged paired reads in the assembly
- Calculates assembly metrics including N50, scaffold counts, and lengths
Input:
- Mapped merged reads from Step 3 (
*_mapped.fastq) - Original unmerged reads from Step 1 (
*_unmerged_1.fq,*_unmerged_2.fq)
Output:
{sample}.spades.out/- SPAdes output directory containing:scaffolds.fasta- assembled scaffolds- Assembly graphs and logs
assembly_summary.csv- metrics for all samples including:- Assembly method used (INITIAL/FALLBACK1/FALLBACK2)
- Number of scaffolds
- Scaffold lengths
- Mean scaffold length
- N50 value
Step 5: BLASTn - Round 1 (General Database) (itsfun-blast1)
Searches assembled scaffolds against the general UNITE database for initial taxonomic identification.
Process:
- Optionally creates BLAST database from reference FASTA
- Locates
scaffolds.fastafiles for each sample in assembly directories - Runs BLASTn searches in parallel
- Outputs results in tabular format (outfmt 6)
Input:
- Assembled scaffolds from Step 4 (
*.spades.out/scaffolds.fasta) - UNITE general release database
- Tracking sheet with sample IDs
Output:
{sample}_blast.tsv- BLAST results in tabular format with columns:- qseqid, sseqid, pident, length, mismatch, gapopen, qstart, qend, sstart, send, evalue, bitscore
Database: UNITE general release (sh_general_release_dynamic)
Step 5.5: BLASTn Round 1 Parsing & Taxonomic Validation (itsfun-blast1-parse)
Parses BLAST Round 1 output and validates taxonomic assignments against expected taxonomy with cascading taxonomic rank matching.
Taxonomic Validation Strategy: The parser attempts to match BLAST hits against expected taxonomy using a cascading approach:
- Species-level match - checks if hits match expected species
- Genus-level match - if no species match, checks genus
- Family-level match - if no genus match, checks family
- If no matches at any level, the sample is marked as FAIL
Filtering Criteria:
| Parameter | Default | Description |
|---|---|---|
--min_len |
100 bp | Minimum alignment length |
--min_pident |
85% | Minimum percent identity |
--evalue_cutoff |
1e-5 | Maximum e-value threshold |
Validation Outcomes:
- PASS: Exactly one contig matches expected taxonomy after filtering
- FAIL: Zero contigs match, or multiple contigs remain after filtering
Input:
- BLAST TSV files from Step 5
- Taxonomy CSV with expected taxonomic assignments (must contain ID column and taxonomic hierarchy: Kingdom, Phylum, Class, Order, Family, Genus, Species)
- Assembly directory for contig extraction
Output:
blast_validation_summary.csv- comprehensive validation results including:ID- sample identifierblast_round1_found_taxon- taxonomic level where match was foundblast_round1_expected_taxonomy- full expected taxonomy stringblast_round1_n_contigs_in- total contigs in assemblyblast_round1_n_contigs_hits- contigs matching expected taxonomyblast_round1_contigs- contig IDs that matchedblast_round1_hit_taxonomy- taxonomy of best BLAST hitblast_round1_hit_coords- alignment coordinatesblast_round1_correct_taxonomy- PASS/FAIL status
filtered_{sample}_blast.tsv- filtered BLAST results for passing samples{sample}_parsed_contig.fasta- extracted contig sequences for passing samples
Step 6: BLASTn - Round 2a (ITS2-Specific) (itsfun-blast2)
Searches validated contigs against the UCHIME ITS2 reference database for region-specific validation. This step uses seqkit grep to extract only the contigs that passed Round 1 validation before running BLAST.
Process:
- Reads BLAST Round 1 TSV results to identify validated contig IDs
- Extracts unique contig headers from each sample's Round 1 results
- Uses
seqkit grepto extract matching scaffolds from assembly FASTA files - Runs BLASTn against ITS2-specific UCHIME database
- Processes samples in parallel
Input:
- Assembly scaffolds from Step 4 (
*.spades.out/scaffolds.fasta) - BLAST Round 1 TSV results from Steps 5/5.5
- UCHIME ITS2 reference database
- Tracking sheet with sample IDs
Output:
{sample}_blast.tsv- ITS2-specific BLAST results- Temporary matched scaffold FASTAs (cleaned up after processing)
Database: UCHIME ITS2 reference dataset
Step 6.5: BLASTn Parsing & Validation (ITS2) (itsfun-blast-parse)
Parses ITS2-specific BLAST results and applies multi-tier taxonomic validation with cascading fallbacks from family to genus to species level.
Multi-Tier Taxonomy Matching Logic: When expected family is present:
- 0 family matches → FAIL
- 1 family match → PASS
- >1 family matches → Check genus level:
- No expected genus → FAIL
- 1 genus match → PASS
- 0 or >1 genus matches → Check species level:
- No expected species → FAIL
- 1 species match → PASS
- 0 or >1 species matches → FAIL
When expected family is empty (fallback to genus):
- 0 genus matches → FAIL
- 1 genus match → PASS
- >1 genus matches → Check species level (same logic as above)
Input:
- ITS2 BLAST TSV files from Step 6
- Taxonomy CSV with expected taxonomic assignments
- Assembly directory for contig extraction
Output:
taxonomy_validation_summary.csv- validation results including:ID- sample identifierexpected_family- expected taxonomic family (or genus/species if family unavailable)expected_taxonomy- full expected taxonomy stringn_contigs_in- total contigs in assemblyn_contigs_hits- contigs matching expected taxonomycontigs- matching contig IDshit_taxonomy- taxonomy from best BLAST hitits_coords- ITS region coordinates on contigcorrect_taxonomy- PASS/FAIL statuscontig_path- path to extracted contig FASTA
{sample}_parsed_contig.fasta- extracted contig sequences for passing samples
Step 7: BLASTn - Round 2b (ITS1-Specific) (itsfun-blast2)
Parallel analysis searching against UCHIME ITS1 reference database. Uses the same workflow as Step 6 but with the ITS1-specific database.
Input:
- Assembly scaffolds from Step 4
- BLAST Round 1 TSV results from Steps 5/5.5
- UCHIME ITS1 reference database
- Tracking sheet with sample IDs
Output:
{sample}_blast.tsv- ITS1-specific BLAST results
Database: UCHIME ITS1 reference dataset
Step 7.5: BLASTn Parsing & Validation (ITS1) (itsfun-blast-parse)
Parses ITS1-specific BLAST results using the same multi-tier taxonomic validation as Step 6.5.
Input:
- ITS1 BLAST TSV files from Step 7
- Taxonomy CSV with expected taxonomic assignments
- Assembly directory for contig extraction
Output:
taxonomy_validation_summary.csv- ITS1 validation results (same format as Step 6.5){sample}_parsed_contig.fasta- extracted contig sequences for passing samples
Step 8: ITS Primer Binding & Extraction (itsfun-extract)
Identifies primer binding sites and extracts ITS sequences from validated contigs using seqkit amplicon. Uses standard ITS primers from White et al. (1990) by default, with support for custom primer sets.
Default Primers (White et al. 1990):
| Primer | Sequence (5' → 3') |
|---|---|
| ITS1 | TCCGTAGGTGAACCTGCGG |
| ITS2 | GCTGCGTTCTTCATCGATGC |
| ITS3 | GCATCGATGAAGAACGCAGC |
| ITS4 | TCCTCCGCTTATTGATATGC |
Target Regions:
| Region | Forward Primer | Reverse Primer | Description |
|---|---|---|---|
| ITS1 | ITS1 | ITS2 | ITS1 spacer region |
| ITS2 | ITS3 | ITS4 | ITS2 spacer region |
| ITS_complete | ITS1 | ITS4 | Full ITS region (ITS1 + 5.8S + ITS2) |
Process:
- Reads sample IDs from tracking sheet
- Locates FASTA files for each sample
- Runs
seqkit ampliconwith each primer pair (max 2 mismatches, strict mode) - Generates extraction summary statistics
Input:
- Validated contig FASTAs from Steps 6.5/7.5 (
*_parsed_contig.fasta) - Tracking sheet with sample IDs
- Optional: Custom primers TSV and regions TSV Output:
ITS1/{sample}_ITS1.fa- extracted ITS1 sequencesITS2/{sample}_ITS2.fa- extracted ITS2 sequencesITS_complete/{sample}_ITS_complete.fa- extracted complete ITS sequencesextraction_summary.csv- extraction success per sample and regionsummary_report.txt- detailed extraction statistics
Custom Primers TSV Format:
A header row is required, with the columns name and sequence (tab-separated):
name sequence
FWD1 ATCGATCGATCG
REV1 GCTAGCTAGCTA
Custom Regions TSV Format:
A header row is required, with the columns region, forward and reverse (tab-separated). The forward and reverse values must match name entries in the primers TSV:
region forward reverse
MyRegion FWD1 REV1
--primers_tsv and --regions_tsv must be supplied together, or neither (to use the built-in ITS defaults).
Note on custom regions.
summary_report.txtreports per-region counts and the "no regions extracted" list using whatever region names your regions TSV defines. The ITS-specific breakdown - complete ITS, ITS1 only, ITS2 only is emitted only when the region set includesITS1,ITS2andITS_complete.
Step 9: Summary Metrics Aggregation (itsfun-summary)
Compiles comprehensive summary statistics across all pipeline steps, performs contig analysis to resolve ITS1/ITS2 results, and prepares final output FASTAs for submission.
Process:
- CSV Discovery: Finds and merges all pipeline summary CSVs (fastp, UNITEd, mapping, assembly, BLAST, extraction)
- Contig Analysis: Compares ITS1 and ITS2 results to identify:
- Contigs with both ITS1 and ITS2 on the same scaffold
- Overlapping coordinate detection (potential assembly issues)
- Resolution when ITS1 and ITS2 are on different contigs
- Decision Making: Runs R-based decision logic (
its_decision_making.R) to determine final outcomes - FASTA Preparation: Renames and organises final FASTAs for submission. This includes new sequence headers (default header=
<ID>|<ITS1/ITS2/ITS_complete/putative_ITS_region>for any passes)
Contig Analysis Logic:
- Both ITS1 and ITS2 PASS on same contig: Check for coordinate overlap
- Non-overlapping → PASS (contiguous)
- Overlapping → WARNING (potential issue)
- Both PASS on different contigs: Default to ITS2 contig
- Only ITS1 PASS: Use ITS1 contig
- Only ITS2 PASS: Use ITS2 contig
- Both FAIL: Mark as failed
Input:
- All pipeline summary CSV files from previous steps
- Optional: Naming TSV for custom FASTA header formatting
Output:
final_results_dir/merged_summary_{date}.csv- comprehensive merged summary with columns:- UNITEd metrics (reference retrieval)
- Trimming/merging metrics (fastp)
- Assembly metrics (SPAdes)
- BLAST Round 1 results
- ITS1 and ITS2 BLAST results
- Extraction results
- Mapping statistics
- Contig analysis results (overlapping_coords, same_contig)
- Final decision (Final_outcome, Final_contig_desc, Final_contig)
final_results_dir/pass_fastas/- renamed FASTAs for samples that passed all validationfinal_results_dir/manual_verification/- FASTAs requiring manual review
Naming TSV Format (optional):
SAMPLE001 Genus_species_voucher123
SAMPLE002 Genus_species_voucher456
Output Directory Structure
output_base/
├── 00_logs/ # Detailed logs for each step
├── 01_fastp_processed/ # Step 1: Quality-filtered reads
│ ├── {sample}_trimmed_1.fq
│ ├── {sample}_trimmed_2.fq
│ ├── {sample}_merged.fq
│ ├── {sample}_unmerged_1.fq
│ ├── {sample}_unmerged_2.fq
│ ├── {sample}_trim.json
│ ├── {sample}_merge.json
│ ├── {sample}_overlaps.html
│ ├── fastp_summary.out (long-formatted version of fastp_summary.csv)
│ ├── fastp_summary.csv
│ ├── trimmed_json_summary.csv
│ └── merged_json_summary.csv
├── 02_UNITEd/ # Step 2: Retrieved reference sequences
│ ├── {sample}_seed.fasta
│ └── UNITEd_summary.csv
├── 03_mapped_reads/ # Step 3: Reads mapped to references
│ ├── {sample}_mapped.fastq
│ ├── {sample}_mapped_unmerged_1.fastq
│ ├── {sample}_mapped_unmerged_2.fastq
│ ├── {sample}_mapped_flagstats.txt
│ ├── {sample}_unmerged_1_flagstats.txt
│ ├── {sample}_unmerged_2_flagstats.txt
│ └── mapping_summary.csv
├── 04_assemblies/ # Step 4: Assembled contigs
│ ├── {sample}.spades.out/
│ │ ├── scaffolds.fasta
│ │ ├── contigs.fasta
│ │ └── ...
│ └── assembly_summary.csv
├── 05_blast_round1/ # Step 5: Initial BLAST results
│ └── {sample}_blast_results.tsv
├── 05a_blast_parsed1/ # Step 5.5: Filtered and validated results
│ ├── blast_validation_summary.csv
│ ├── filtered_{sample}_blast_results.tsv
│ └── {sample}_parsed_contig.fasta
├── 06_blast_round2a-ITS2/ # Step 6: ITS2-specific BLAST results
│ └── {sample}_blast_results.tsv
├── 06a_blast_parsed2a-ITS2/ # Step 6.5: Validated ITS2 results
│ ├── blast_parser_its2_summary.csv
│ ├── {sample}_blast_results-all_hits.tsv
│ └── {sample}_parsed_contig.fasta
├── 07_blast_round2b-ITS1/ # Step 7: ITS1-specific BLAST results
│ └── {sample}_blast_results.tsv
├── 07a_blast_parsed2b-ITS1/ # Step 7.5: Validated ITS1 results
│ ├── blast_parser_its1_summary.csv
│ ├── {sample}_blast_results-all_hits.tsv
│ └── {sample}_parsed_contig.fasta
├── 08_its_primer_extraction/ # Step 8: Extracted ITS sequences
│ ├── ITS1/
│ │ └── {sample}_ITS1.fa
│ ├── ITS2/
│ │ └── {sample}_ITS2.fa
│ ├── ITS_complete/
│ │ └── {sample}_ITS_complete.fa
│ ├── extraction_summary.csv
│ └── summary_report.txt
└── final_results_dir/ # Step 9: Final aggregated outputs
├── merged_summary_{date}.csv
├── pass_fastas/
│ └── {sample}_{description}.fasta
└── manual_verification/
└── {sample}_manual_verification_needed.fasta
Dependencies
All of the dependencies below are installed by the conda environment (its-fun-2-map.yaml) and the its-fun-2-map package - see Installation and quick start. They are listed here for reference.
Languages
- r-base 4.5.2 - keep on 4.5.x; rpy2's conda build encodes the R series, so bumping R alone leaves rpy2 with no matching build
- python 3.14 - minimum supported is 3.12, which
seqpy-toolsrequires
Conda packages
| Package | Version |
|---|---|
| fastp | 1.0.1 |
| seqkit | 2.12.0 |
| bwa | 0.7.19 |
| samtools | 1.24 |
| bbmap | 40.02 |
| openjdk | 21 |
| spades | 4.2.0 |
| blast | 2.17.0 |
BBMap supplies repair.sh, which itsfun-map uses to resynchronise mapped read
pairs in Step 3; openjdk is its Java runtime. htslib is no longer listed - it is
pulled in automatically as a library dependency of samtools.
Python packages (not built-in)
| Package | Version |
|---|---|
| pandas | 2.3.3 |
| numpy | 2.4.1 |
| biopython | 1.86 |
| rpy2 | 3.6.4 |
| scipy | 1.18.0 |
| openpyxl | 3.1.5 |
| pgzip | 0.4.0 |
R packages
- jsonlite 2.0.0 - used by
parse_fastp_json.R;its_decision_making.Rneeds only base R
Custom tool packages
its_fun_2_map.its_fun_tools- shared helpers, installed as part of theits-fun-2-mappackage. NoPYTHONPATHfiddling and no need to run from the repository directory.- seqpy-tools 0.1.0 (available via pip) - imported by every module in the pipeline
Authors
M. Kamouyiaros & D. Parsons @ the Natural History Museum, London (NHMUK)
Metadata
Release files for its-fun-2-map 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| its_fun_2_map-1.0.0.tar.gz | 97.1 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| its_fun_2_map-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 181.6 kB
Release files / its_fun_2_map-1.0.0.tar.gz
| Download URL | its_fun_2_map-1.0.0.tar.gz |
|---|---|
| Size | 97.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ec3cddc4714963673dfafe85912194cbeb1d5dace4f269e9906b7a8fc0b2c626
|
|
BLAKE2b-256 checksum How to use checksums |
115ea3c882ac299e404e8624da5289ad1797f37cb9503980c2fb09463c8fd1d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logRelease files / its_fun_2_map-1.0.0-py3-none-any.whl
| Download URL | its_fun_2_map-1.0.0-py3-none-any.whl |
|---|---|
| Size | 84.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
538c93055ca05c542ffe8d2955306fafcee05df4aeaddd27145ebbebe6f3f788
|
|
BLAKE2b-256 checksum How to use checksums |
4eb7d1332217d196bb3215b62cf5eab7b1eeb461bdb51368a4677fcb27483db5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logSecurity for its-fun-2-map 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for its_fun_2_map-1.0.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.