Skip to content

Changelog

This project adheres to Semantic Versioning and Keep a Changelog format.

  • refget.seqcolapi ships in the wheel. The service code moved from the top-level seqcolapi/ directory into refget/seqcolapi/, so a pip install 'refget[seqcolapi]' can serve the API with no repository checkout. Run it as uvicorn refget.seqcolapi.main:store_app (store-backed) or uvicorn refget.seqcolapi.main:app (PostgreSQL-backed).
  • refget.seqcolapi.create_seqcol_app: a store-backed app factory that returns a self-contained, mountable FastAPI app, so a host application can mount the seqcol API under a prefix and keep its own /service-info.
  • create_refget_router(mount_prefix=...): lets the compliance endpoints self-target the seqcol service rather than the server root when the router is included under a prefix.
  • db extra: pip install 'refget[db]' installs just the SQLModel layer (refget.models, refget.agents, refget admin) with no web server.
  • Importing a module without its extra now raises an error naming the extra to install, rather than a bare ModuleNotFoundError.
  • Distribution: sqlmodel is no longer a base dependency. It moved out of the base install into the new db extra, and out of the seqcolapi extra, which now installs fastapi and uvicorn only. If you import refget.models, refget.agents, or run refget admin, install refget[db]. The PostgreSQL-backed service now needs refget[seqcolapi-db] (equivalent to refget[seqcolapi,db]); the store-backed service needs only refget[seqcolapi] and pulls no ORM.
  • ubiquerg removed from the seqcolapi extra. Nothing under refget/ imports it.
  • refget store serve now builds its app with refget.seqcolapi.create_seqcol_app instead of hand-wiring FastAPI, so it serves the same routes the deployments do — notably /service-info, which it previously omitted — plus a permissive CORS middleware.
  • refget.seqcolapi.main.create_store_app was renamed to create_seqcolapi_store_app, so that it is not confused with the generic refget.seqcolapi.create_seqcol_app: it carries the seqcolapi.databio.org service identity (org.databio.seqcolapi.store) and the SCOM service-info block. The uvicorn refget.seqcolapi.main:store_app entry point is unchanged.
  • HTTP response models moved from refget.models (SQLModel) to refget.response_models (plain pydantic), so serving the API needs no ORM.
  • refget.router.compliance_router — the module-level router singleton is gone. It is replaced by create_refget_router(compliance=True) (the default), which builds the compliance routes per router so they can self-target a mounted prefix. No deprecation alias is provided on purpose: a module-level singleton can only be built with an empty mount_prefix, and would therefore silently reintroduce the root-targeting bug this replacement fixes. Nothing in-tree used the name.
  • python -m seqcolapi / python -m refget.seqcolapi — both __main__.py modules imported a main() that has never existed, so both raised ImportError on every invocation. Use the refget CLI, or uvicorn with one of the app paths above.

This is a major release with significant restructuring, new features, and improved tooling.

  • CLI overhaul: New refget CLI built with Typer, including subcommands for store, seqcol, fasta, config, and admin
  • Local store: refget store pull command to pull sequence collections from remote servers to a local store
  • FASTA digesting: refget fasta digest CLI command for computing sequence collection digests from FASTA files
  • Sequence collection similarities: calc_similarities and calc_similarities_from_json functions with Jaccard similarity metrics and API endpoint
  • FASTA DRS objects: FastaDrsObject model for serving FASTA files via DRS endpoints
  • Comparison interpreter: Local sequence collection comparison interpretation module (SCIM)
  • Species filtering: Filter similarities endpoint by species
  • Human-readable names: human_readable_name field on SequenceCollection model
  • Pydantic API models: Structured response models for API endpoints (fixes #33)
  • Swagger documentation: API query parameter documentation
  • Frontend features: Strip plots, one-to-many comparison view, FASTA digest tool, species selector, SCIM integration, dynamic version display
  • Compliance testing: Comprehensive API compliance test suite
  • Integration test framework: New integration test infrastructure with ephemeral databases
  • CLI test suite: Extensive CLI tests covering store, seqcol, fasta, config, admin, and help commands
  • Service info: /service-info endpoints for fasta_drs and refget_store features
  • Attribute listing: /list/attributes endpoint per GA4GH paging guide
  • Bulk query: Preload and bulk query support for sequence collections
  • R package: First pass at refget-r R bindings (experimental)
  • New gtars features exposed in the refget Python API: compute_fai, digest_sequence, and SequenceCollection available via import refget
  • FHR metadata support: refget store metadata and refget store metadata-set commands for managing collection metadata
  • Seqcol CLI commands (show, compare, validate) look up collections in the local store before querying remote servers
  • Web UI compliance runner with real-time streaming results, a stop button, and per-test descriptions
  • gtars version displayed in service-info and frontend footer badges
  • Download collections in seqcol JSON format from the web UI
  • Switched to gtars: Replaced pyfaidx and henge with gtars for FASTA parsing and digest computation
  • Major code restructure: Consolidated schemas, reorganized modules, reduced code duplication
  • Improved error messages: Better dependency error messages (fixes #49), clearer import errors
  • Performance optimizations: Faster level 2 retrieval using get_many, optimized similarity calculations
  • Updated GA4GH compliance: Aligned with latest refget sequence collections specification
  • Schema consolidation: Single unified schema replacing multiple schema files
  • Collated attribute validation: Validation for collated attributes in sequence collections
  • Frontend overhaul: Updated comparison view, heatmap aliases, loading states, error handling
  • seqcolapi no longer has independent versioning; it now versions with refget
  • Henge dependency: Removed henge and biopython requirements
  • Legacy code: Removed old flags code, duplicate functions, unused yacman imports
  • from_PySequenceCollection construction and associated tests
  • Circular dependency import issues in utilities
  • Level 1 model representation
  • Comparison links
  • Cancel handling in frontend
  • Various linting and type hint improvements
  • Bumped frontend dependencies: vite, minimatch, rollup, esbuild, js-yaml, vega
  • Fix CLI store list JSON serialization error (was returning non-serializable metadata objects)
  • Fix CLI store get, store remove, and store pull commands that failed to find collections
  • Update CLI to use iter_collections() API instead of removed collections() method
  • Major restructure of the package with new comprehensive CLI (refget command)
  • New CLI subcommands: admin, config, fasta, seqcol, and store
  • Implement FASTA DRS objects for serving FASTA files via GA4GH DRS endpoints
  • Add RefgetStore integration for local sequence storage via gtars
  • Refactor to isolate gtars dependency, improving import performance
  • Add service-info capabilities for fasta_drs and refget_store features
  • New integration test framework with ephemeral Docker PostgreSQL
  • Comprehensive CLI test suite
  • API compliance tests against GA4GH seqcol specification
  • Fix endpoint path: /list/collection (was /list/collections in client)
  • New browser-based /digest feature for computing seqcol digests from FASTA files entirely client-side using @databio/gtars WASM module
  • performance fix for calculating jaccard similarties
  • add human_readable_name list as an attribute to SequenceCollection for displaying similarity results
  • adding SequenceCollections via PEP will now add associated sample_name as a human_readable_name
  • add wrapper for gtars RefgetStore so it can be called directly from refget
  • adds API endpoints for jaccard similarity calculations
  • some refactoring for newest gtars, v0.3.0
  • add class method from_PySequenceCollection for creating SequenceCollection from a gtars-created SequenceCollection
  • adds Similarity UI to frontend
  • updated add method to use boolean for updating SequenceCollection if already exists
  • addition of SCIM
  • Complete rewrite of the clients and agents.
  • New SequenceAgent class allows using the RefgetDBAgent class to store sequences. This is meant for testing purposes.
  • Completely refactored Clients work adds mature SequenceClient and SequenceCollectionClient classes.
  • Fix issues with rust digest calculations to improve flexibilty, using latest update to gtars interface.
  • Updates to latest ga4gh paging guidance
  • Add a beta CLI with digest-fasta and add-fasta functionality.
  • Remove some old stuff based on henge backend
  • Major revamp to RefGetClient object, which now works with either sequences or seqcol servers, and can handle any of the seqcol API endpoints.
  • Better integration of rust digest calculations built on gtars
  • switch back-end to use JSON instead of str
  • implement name_length_pairs and sorted_sequences attrs
  • improve some SeqCol object representations
  • Change paging style of list endpoints to match latest GA4GH pagination guide
  • Implement new /list/attribute endpoint on back-end, and add to demo
  • Update endpoint paths slightly after discussion for the /list and /attribute endpoints
  • Remove some of the duplicate endpoints to solidify to one API
  • Work on deployment, container building, configuration
  • Add some work toward pangenomes
  • Various misc improvements
  • Implement new sqlmodel and agent for new database backend
  • Add new React interface
  • Add seqcolapi router
  • Integrate seqcol into refget package.
  • First public version, backed by henge version 0.1.1.

Beta version for testing