Skip to content

feat: implement TSV output formatter (#84)#110

Merged
crashfrog merged 2 commits into
mainfrom
worktree-agent-aa271e1321139964f
Jun 1, 2026
Merged

feat: implement TSV output formatter (#84)#110
crashfrog merged 2 commits into
mainfrom
worktree-agent-aa271e1321139964f

Conversation

@crashfrog
Copy link
Copy Markdown
Member

Summary

Implements TSV formatter in phraya-filter. Converts filtered VariantObservations to tab-separated values with user-selectable columns, including a header row with proper escaping of special characters (tabs, newlines in provenance fields).

Changes

  • Implemented format_tsv(observations: Iterator<VariantObservation>, columns: &[Column]) → String
  • Implemented format_tsv_with_defaults(observations: Iterator<VariantObservation>) → String
  • Column enum: Position, RefBase, AltBases, Coverage, Mapq, Cigar, EditDistance, Confidence, Provenance
  • Default columns: Position, RefBase, AltBases, Coverage, Mapq
  • Multi-allelic sites show comma-separated ALT alleles (sorted)
  • Coverage uses local_coverage[0] as proxy (consistent with ThresholdFilter)
  • Proper escaping: tabs → \t, newlines → \n
  • Shows "." for ALT when no alternative alleles

Test Results

All 15 acceptance tests passing:

  • Single observation with all columns
  • Column selection (Position + Coverage only)
  • Default columns
  • Special character escaping (tabs and newlines)
  • Multi-allelic sites with sorted alternatives
  • No alt alleles shows "."
  • Zero coverage when empty
  • Multiple observations
  • Empty observations
  • All individual field tests (Confidence, EditDistance, Cigar, Position, RefBase)

🤖 Generated with Claude Code

crashfrog and others added 2 commits June 1, 2026 07:32
RED phase tests for TSV output formatter in phraya-filter. Tests verify:
- Column selection and headers
- Special character escaping (tabs, newlines)
- Multi-allelic site handling (sorted, comma-separated)
- Empty observations and empty coverage
- All column types (Position, RefBase, AltBases, Coverage, Mapq, Cigar, EditDistance, Confidence, Provenance)
- Default column set (Position, RefBase, AltBases, Coverage, Mapq)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Implements format_tsv() and format_tsv_with_defaults() functions for
converting VariantObservations to tab-separated values with user-selectable
columns. Includes header row and proper escaping of special characters
(tabs, newlines) in provenance fields.

- Column enum: Position, RefBase, AltBases, Coverage, Mapq, Cigar,
  EditDistance, Confidence, Provenance
- Default columns: Position, RefBase, AltBases, Coverage, Mapq
- Multi-allelic sites show comma-separated ALT alleles (sorted)
- Coverage uses local_coverage[0] as proxy (consistent with ThresholdFilter)
- All 15 acceptance tests pass

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
@crashfrog crashfrog mentioned this pull request Jun 1, 2026
9 tasks
@crashfrog crashfrog merged commit fe52a56 into main Jun 1, 2026
2 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant