activity_phenotype.csv¶
One row is one activity-score band → one metabolizer phenotype, per gene (CYP2D6 PM/IM/NM/UM). The score itself is the consumer's call — Σ activity × copies across the diplotype — and this table only bins it. Nothing here computes a score, and a module that looks like it does is misread.
Bounds are inclusive and a shared endpoint belongs to the higher bin under continuous tiling, so two adjacent bands may legitimately name the same number.
Identity¶
| Row model | ActivityPhenotypeRow (just_dna_format.binning) |
| Becomes | activity_phenotype.parquet — lead parquet: activity_phenotype.parquet |
| Authored or derived | authored — a person writes it (a drafter may append rows) |
| Draftable | yes — draft can append rows |
| Drafted by | no drafting provider targets this table — draft writes no row of it |
| Natural key | gene |
| Fact signature | no |
| In the attestation binding | yes — manifest.inputs[] |
Columns¶
| Column | Type | Required | Values | Meaning |
|---|---|---|---|---|
measure_kind |
str |
defaulted | one of: activity_score |
Fixed: activity_score |
measure_min |
float | None |
optional | Inclusive lower bound; None = open below. On a continuous measure this is also the tie-break: a value two bins share belongs to the one with the greater measure_min. | |
measure_max |
float | None |
optional | Inclusive upper bound; None = open above. Inclusive on every measure_kind — on a continuous measure the next bin may start on it, and then that bin owns the value. Author the decimal you mean: a VCF Float is 32-bit, so a measured 0.3 reads as just above an authored 0.3 (and a measured 0.9 as just below). The comparison is done in float32 — narrow the bound the same way the measurement was narrowed — never with an epsilon. | |
measure_tiling |
str | None |
optional | one of: continuous, quantised |
How this measure's axis is divided: quantised (a grid — two bins may not share an endpoint, and a hole narrower than one step is not a hole) or continuous (dense — adjacent bins share an endpoint and the higher one owns it, and any positive hole is reported). Leave empty for the kind's default: quantised for copy_number and repeat_count, continuous for allele_fraction and prs_percentile, neither for activity_score. Constant within a bin group. A group left empty on a kind that defaults to quantised is read as continuous anyway if it carries a fractional bound — nothing on a grid of whole numbers can hold one — and the compiler says when it did that. Note quantised assumes a grid of WHOLE numbers: there is no way to state a finer step, so on a bounded domain like allele_fraction it switches interior gap reporting off entirely. |
direction |
str | None |
optional | one of: contested, neutral, protective, risk, unknown |
Effect direction: protective|risk|neutral|unknown |
clin_sig |
str | None |
optional | one of: affects, association, benign, conflicting, drug_response, likely_benign, likely_pathogenic, not_provided, other, pathogenic, protective, risk_factor, uncertain_significance |
ClinVar/ACMG clinical significance (VEP CLIN_SIG vocabulary) |
phenotype |
str | None |
optional | Associated trait or phenotype | |
trait_efo_id |
str | None |
optional | EFO/MONDO/OBA/HP trait ontology id(s) | |
conclusion |
str |
required | Human-readable interpretation for this bin | |
unresolved |
bool |
defaulted | True on the sentinel row a consumer selects when the measurement is absent. | |
source_field |
str | None |
optional | Optional VCF field the consumer extracts this measure from, best written with its namespace (e.g. FORMAT/REPCN, FORMAT/AF, INFO/CN|FORMAT/DS). A declarative pointer (field-name key, optionally qualified INFO/ or FORMAT/, optionally |-alternated), never an expression — an extraction hint; the measurement still comes from the consumer. A bare key means unqualified, and INFO and FORMAT define different fields under DP, AD, ADF, ADR, MQ, AF and CN. | |
source_element |
str | None |
optional | one of: annotated_alt, largest, largest_alt, reference, smallest, smallest_alt, sum, sum_alt |
Which of source_field's values this bin is measured against, when the field carries more than one for a record: largest|largest_alt|smallest|smallest_alt|sum|sum_alt|annotated_alt|reference. A named rule, never an index. 'More than one' covers both the spec's multi-valued cardinalities (VCF Number=A/R/G/P/.) and a caller that packs several into one cell — ExpansionHunter's REPCN reports both repeat alleles as 17/42 — since the encoding is the caller's business and which value the annotation means is the module's. On a Number=R field the reference is element zero, which is why each ranging rule comes in a pair: the bare name counts it, the _alt name does not. Leave empty when the field carries a single value. |
pmid |
str | None |
optional | Optional PubMed id grounding THIS boundary — the literature the threshold is drawn from. Free-form like StudyRow.pmid (9545397, [PMID: 9545397], a ;-joined list). The bin row cites; studies.csv describes. |
|
gene |
str |
required | Gene symbol, e.g. CYP2D6 |
Generated from the row model at build time — reference.authoring_reference(), the same answer describe_table gives an authoring tool. Nothing on this page is hand-kept.