fastreer — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited fastreer (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.
You are fastreeR, a specialised ClawBio skill for computing phylogenetic distance matrices and trees from genomic VCF or FASTA data using the fastreeR hybrid Java/Python toolkit.
Fire this skill when the user says any of:
Do NOT fire when:
dnaspstruct-predictorseq-wranglerclaw-ancestry-pcavariant-annotation(VCF → PLINK → distance matrix → external tree software) with no unified output.
PHYLIP distance matrix, with optional bootstrap support and windowed analysis.
data in O(n_samples²) RAM rather than loading everything into memory.
hierarchical clustering tree directly from a VCF, with optional bootstrap resampling.
in downstream tools (R, Python, ape, BioPython).
via --window-bp or --window-variants.
This skill computes pairwise genomic distances and hierarchical trees from VCF or FASTA input. It does not perform alignment, variant calling, variant annotation, or population genetics statistics.
| Format | Extension | Required Fields | Example |
|---|---|---|---|
| VCF | .vcf, .vcf.gz | GT genotype field; ≥2 samples | samples.vcf.gz |
| FASTA | .fasta, .fasta.gz, .fa, .fa.gz, .fas, .fas.gz | ≥2 sequences | sequences.fasta |
| PHYLIP dist | .dist | PHYLIP matrix header + rows | distances.dist |
When the user provides a VCF or FASTA:
VCF2TREEVCF2DISTDIST2TREEFASTA2DISTfastreer.py with appropriate flags (threads, mem, bootstrap)tree.nwk or distances.dist, report.md, result.json,and reproducibility bundle
Freedom levels:
# Newick tree from VCF (with bootstrap)
python skills/fastreer/fastreer.py \
--command VCF2TREE --input samples.vcf.gz --bootstrap 100 \
--threads 4 --output <report_dir>
# Distance matrix from VCF
python skills/fastreer/fastreer.py \
--command VCF2DIST --input samples.vcf.gz --threads 4 \
--output <report_dir>
# Tree from pre-computed distance matrix
python skills/fastreer/fastreer.py \
--command DIST2TREE --input distances.dist --output <report_dir>
# K-mer distance from FASTA sequences
python skills/fastreer/fastreer.py \
--command FASTA2DIST --input sequences.fasta --kmer 5 \
--output <report_dir>
# Windowed analysis (100 kb windows)
python skills/fastreer/fastreer.py \
--command VCF2DIST --input samples.vcf.gz --window-bp 100000 \
--output <report_dir>
# Demo (no data needed)
python skills/fastreer/fastreer.py --demo --output /tmp/fastreer_demo
# Via ClawBio runner
python clawbio.py run fastreer --demo
python clawbio.py run fastreer --input samples.vcf.gzpython clawbio.py run fastreer --demoExpected output: VCF2TREE run on a synthetic 5-sample / 20-SNP VCF. Produces a Newick tree (tree.nwk), report.md with sample list and interpretation, and a reproducibility bundle. If Java / fastreeR is not installed, synthetic demo output is generated to illustrate the expected format.
VCF2TREE / VCF2DIST (cosine dissimilarity from genotypes):
variant sites as: d(i,j) = 1 - cosine_similarity(gt_vector_i, gt_vector_j) where genotypes are encoded as allele dosages (0/0→0, 0/1→1, 1/1→2).
.dist file.distance matrix; emit Newick with optional bootstrap node labels.
FASTA2DIST (D2S k-mer distance):
Key parameters:
--threads: parallelism for distance computation (default: 1)--mem: JVM heap in MB (default: 256; increase for >500 samples)--bootstrap: streaming bootstrap replicates from VCF (VCF2TREE only)--kmer: k-mer size for FASTA2DIST (default: 4; range 3–8 typical)# fastreeR Report
**Command**: `VCF2TREE`
**Input**: `demo_samples.vcf` (5 samples, 20 variants)
**Date**: 2026-05-11
## Samples (5)
- SAMPLE1
- SAMPLE2
- SAMPLE3
- SAMPLE4
- SAMPLE5
## Phylogenetic Tree
**Output format**: Newick
**File**: `tree.nwk`
((SAMPLE1:0.120,SAMPLE2:0.098):0.045,
(SAMPLE3:0.110,(SAMPLE4:0.087,SAMPLE5:0.132):0.062):0.038);
SAMPLE1 and SAMPLE2 cluster together (distance 0.12), suggesting greater
genomic similarity relative to SAMPLE3–5. SAMPLE4 and SAMPLE5 are the
second closest pair (distance 0.087).output_directory/
├── report.md # Summary: samples, tree/matrix preview, interpretation
├── result.json # Machine-readable: command, samples, paths, metadata
├── tree.nwk # Newick tree (VCF2TREE / DIST2TREE)
├── distances.dist # PHYLIP distance matrix (VCF2DIST / FASTA2DIST)
└── reproducibility/
├── commands.sh # Exact command to reproduce
└── environment.txt # Java version + pip fastreer versionRequired:
fastreer >= 2.2.0 (install with pip install fastreer)sudo apt install default-jre (Linux) or brew install openjdk@17 (macOS)
Optional:
matplotlib, for tree/heatmap visualisation in future versionsfastreeR's core is a Java application. Always check Java 11+ is present before running; emit a clear error if missing, not a cryptic JVM crash.
columns) will silently fail or produce empty output. Validate that #CHROM line has columns beyond FORMAT (i.e., at least one sample name).
--mem 256 is insufficient for >500samples. Rule of thumb: 4 × n_samples² × n_threads / 1e6 MB. For 1000 samples with 8 threads: ~32 GB. Document this prominently or auto-compute a suggested value.
--window-bp produces a single file containingmultiple concatenated PHYLIP matrices or Newick trees separated by comment lines. Do not attempt to parse it as a single matrix.
BioFM language model. It is intentionally excluded from v0.1.0. If the user asks for variant embeddings, explain the requirement and the manual install steps.
zcat input.vcf.gz | fastreer VCF2TREE -i -works but the - stdin mode requires fastreeR ≥ 2.1.0 and may not stream on Windows. Use -i input.vcf.gz directly for portability.
reproducibility/commands.sh records the exact command run.The agent (LLM) dispatches and explains results. The Python script (fastreer.py) executes fastreeR and writes outputs. The agent must NOT invent tree topologies, distance values, or bootstrap support figures; all must come from fastreeR output.
Trigger conditions: the orchestrator routes here when:
fastreer, fastreeR, VCF2TREE, VCF2DIST, FASTA2DISTChaining partners:
dnasp: Run DnaSP population statistics on the same VCF, then fastreeR for treevariant-annotation: Annotate variants first, then build a tree to visualise population structureclaw-ancestry-pca: use PCA for admixture and fastreeR for hierarchical clustering; the two provide complementary views of population structureseq-wrangler: Align sequences first (seq-wrangler), then compute FASTA2DIST treepip index versions fastreer)skills/_deprecated/ if fastreeR is superseded or unmaintained~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.