Interface BioAssayMetadataService

All Known Implementing Classes:
BioAssayMetadataServiceImpl

public interface BioAssayMetadataService
Curator edits to the upstream-derived metadata on a sample: libraryStrategy, librarySelection and extractedMolecule.

Why this exists

GeoConverterImpl is the only other writer of these three columns, and it writes them once, at import, from what GEO declared. GEO under-declares: ribosome profiling is routinely submitted as OTHER, and GeoConverterImpl.effectiveLibStrategy only rescues the cases whose titles say so unambiguously. Everything it deliberately leaves alone — TRAP, polysome purification, the arms where GEO declared RNA-Seq outright — had no route to the column at all, so the alternative was direct SQL, which emits no audit event and validates nothing.

Validation

libraryStrategy and extractedMolecule are checked against closed vocabularies. 🛑 librarySelection is NOT, and deliberately so: GeoSample.librarySelection is kept as the submitter's raw string (cDNA, PCR, other) precisely so that normalizing to a closed set cannot drop values the enum does not know. It is trimmed and length-checked only.