Skip to content

Add eFP/ePlant gene ID validation, microarray probeset support, and m…#324

Open
rmobmina wants to merge 3 commits into
BioAnalyticResource:devfrom
rmobmina:cleaned-endpoint
Open

Add eFP/ePlant gene ID validation, microarray probeset support, and m…#324
rmobmina wants to merge 3 commits into
BioAnalyticResource:devfrom
rmobmina:cleaned-endpoint

Conversation

@rmobmina

Copy link
Copy Markdown
Contributor

No description provided.

rmobmina added 3 commits June 25, 2026 11:11
…aster DB list

Adds per-eFP-project regex validation (EFP_PROJECT_REGEXES, is_efp_gene_valid)
covering both canonical gene IDs and microarray probeset IDs, with a
database-to-project mapping (DATABASE_EFP_PROJECT) so gene_expression.py can
validate against the right format per database.

Adds the eFP+ePlant discovery/validation pipeline:
- scrape_view_databases.py / scrape_species_view_info.py: live-discover every
  eFP and ePlant view across 55 sites, tagging eFP-only vs ePlant-only vs both
- build_proj_id_view_mapping.py: resolves multi-paper databases (e.g.
  atgenexp_*) to per-view proj_id breakdowns
- validate_db_regex_coverage.py: tests every database's real sample IDs
  against production validation, including legacy databases no longer linked
  from a live dropdown
- build_master_db_list.py: rolls everything up by species, tagging source
  (efp/eplant/both/legacy) and platform (microarray/rna_seq)

193 databases validated, 0 unexplained failures.
… endpoints to use it

- Merge heterodera_schachtii into arabidopsis (it's an Arabidopsis-gene-ID
  database, not a separate species); fix brassica/lupin/triticale scientific
  names per professor's review comments
- Load EFP_PROJECT_REGEXES and DATABASE_EFP_PROJECT from Vincent's
  regex_master_list_efp_eplant registry (58 grouped project patterns instead
  of 193 per-database ones), embedded into combined_master.json at build
  time; empirically verify every regex_project assignment against real
  sample dumps before trusting it, demoting 3 unverified species-fallback
  guesses and fixing 2 misassigned projects (maize_lipid_map, tomato_trait)
- Add a general injection checker (BARUtils.is_injection_attempt) that runs
  before the probeset-shape check in /gene_expression, closing a bypass
  where any string ending in "_at" skipped format validation entirely
- Derive schema_variants directly from real sample_data column dumps instead
  of a coarse rna_seq/microarray platform split, so every one of the 193
  databases is schema_verified against its own real columns (was 146/193)
- Refactor /microarray_gene_expression/<species>/databases and
  .../<species>/<view>/samples to read from combined_master.json instead of
  a hardcoded dict and a since-deleted JSON file (the latter was broken on
  this branch); add test coverage for both
- Add api/utils/master_data_utils.py as the shared combined_master.json
  loader used across bar_utils, gene_id_utils, and the refactored resource
These were leftover exploratory outputs (regex audit dumps, coverage CSVs,
speed benchmark plots, old email drafts) not consumed by any script in the
active build pipeline. db_regex_coverage_report.csv is kept since
build_master_db_list.py reads it as an input.
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