bio-reads-qc-mapping — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited bio-reads-qc-mapping (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Validate a read sample sheet, run read QC and trimming, and map reads to an optional reference with a restartable driver.
Tool guides and versions: docs/README.md.
sample_sheet.tsv against schemas/sample-sheet.schema.json and inspect the plan before running anything: uv run --script skills/bio-reads-qc-mapping/scripts/run_reads_qc_mapping.py \
sample_sheet.tsv --out results/bio-reads-qc-mapping --threads 4
# Inspect run_manifest.json, then execute the same plan on a compute node:
uv run --script skills/bio-reads-qc-mapping/scripts/run_reads_qc_mapping.py \
sample_sheet.tsv --out results/bio-reads-qc-mapping --threads 16 --executeread_type must be paired_short, single_short, or long. Mapping runs only for rows with a non-empty reference; a missing reference is not a mapping failure. The driver reuses a stage only when its declared outputs are non-empty and the stage's .done marker exists. Run --execute through the scheduler (sbatch) for real data, not on a login node.
fastp v1.3.3+ with default adapter and quality trimming. Use BBDuk (BBTools container) instead when you need k-mer contaminant, spike-in, or host removal (docs/bbduk.md).filtlong with no thresholds, which passes every read through. Add --min_length, --keep_percent, or --target_bases for the project (docs/filtlong.md).bwa-mem2 mem. Build the index first with bwa-mem2 index reference.fasta; the driver does not.minimap2 -ax map-ont. For PacBio HiFi use map-hifi, and for PacBio CLR use map-pb.samtools sort, samtools index), then compute per-reference coverage with samtools coverage or CoverM.chopper for quality, length, and end trimming, or filtlong v0.3.1 when selecting reads for assembly (v0.3.0 renamed the long options to --short_1 / --short_2). Use Pychopper for full-length cDNA. Use Porechop_ABI only as a documented fallback for adapter discovery, and record why.gzip -t or raw seqkit stats unless asked. Record raw stat metadata, optionally check a small sample, make the first full pass the filtering step, then run seqkit stats on the outputs.Pychopper can write plain FASTQ even when the output path ends in .gz. Give its outputs plain .fastq names unless you compress them yourself, and check gzip magic bytes before running gzip -t. Rename mislabeled legacy outputs to .fastq before resuming.Pychopper report plotting can fail after the reads are written. If the classified, unclassified, rescued, and read-stats outputs exist and are non-empty, resume downstream from them instead of rerunning Pychopper.fq2bam (GPU BWA-MEM with sorting and duplicate marking).minimap2 (presets map-ont, map-hifi, lr:hq).mm2-fast and mm2-gb are built on minimap2 v2.24, not current v2.30+. Use them only when the older base version is acceptable.tasks/METHODS.md.Prerequisites:
bryce911/bbtools container. See docs/README.md.bwa-mem2 index next to each short-read reference.Inputs:
sample_sheet.tsv with exactly the columns sample_id, read_type, read1, read2, reference; relative paths resolve against the sheet's directory.status after --execute)reads.fastq, or reads_R1.fastq and reads_R2.fastq), fastp.json, fastp.html, mapped.sam, and the qc.done and mapping.done markersmapping_status is planned before --execute, then completed or reused, and not_requested for rows with no reference){ok, skill, out, manifest, warnings} (driver stdout contract in AGENTS.md)fastp.json or seqkit stats).chopper, filtlong, Pychopper, or a documented Porechop_ABI fallback.seqkit stats, FASTQ header sniff, or gzip magic).The runnable fixture at fixtures/sample_sheet.tsv covers paired-end, single-end, and long reads, with mapping requested for two of the three rows.
Issue: Pychopper failed during report or stat plotting but output FASTQs exist Solution: Treat it as a recoverable post-processing failure. Confirm the classified FASTQ is non-empty and readable, fix any misleading .gz suffix, run seqkit stats, and resume downstream from the existing Pychopper outputs.
Issue: bwa-mem2 mem fails immediately on a new reference Solution: The index is missing. Run bwa-mem2 index reference.fasta once, then rerun with --execute; completed QC stages are reused.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.