4.8.3 smORF evidence¶
Function¶
smorf_evidence evaluates Ribo-seq translation evidence for the clustered smORF families produced by smorf_cluster. It is family-aware: for every family and every sample it quantifies P-site abundance, coverage, frame-specific density and frame periodicity, then summarizes the per-family evidence across samples and biological replicate groups.
The final output assigns each family a translation status (Reliable / Uncertain / NoEvidence) and, for reliable families, resolves the translated extent, start site and nested-ORF competition to export a non-redundant reliable smORF table together with its genePred annotation.
Workflow¶
family index → density cache → sample calibration → chromosome evaluation → merge & competition → annotation export
| Stage | Purpose |
|---|---|
| 1 | Build family SQLite index |
| 2 | Parse density tracks |
| 3 | Calibrate samples |
| 4 | Evaluate chromosome scaffolds |
| 5 | Merge outputs |
| 5b | Resolve translation units |
| 6 | Export annotation |
| 7 | Report summary |
Input files¶
| Input | Required | Description |
|---|---|---|
-i, --family-table |
Yes | *.family.message.txt generated by smorf_cluster. |
-M, --family-members |
Yes | *.family.members.txt generated by smorf_cluster. |
--orf-source |
Yes | Full smorf_scanner message table that was used by smorf_cluster. |
-G, --orf-genepred |
Yes | Complete ORF genePred generated by smorf_scanner; column 1 must contain ORF ids matching --orf-source. |
-l, --density-list |
Yes | Tab-delimited density design file (see below). |
-o, --output |
Yes | Output prefix. |
Density list¶
The density list is tab-delimited with a header row and the following columns (matched by name, order-independent):
| Column | Description |
|---|---|
sample |
Sample name. |
group |
Biological replicate group used for replication counting. |
strand |
+, -, or . (unstranded). |
path |
Path to the P-site density track (e.g. a bedGraph file). |
format |
Track format, e.g. bedgraph. |
sample strand path format group
ribo-1 + ../ribo-1_plus.rpf.bedgraph bedgraph wt
ribo-1 - ../ribo-1_minus.rpf.bedgraph bedgraph wt
ribo-2 + ../ribo-2_plus.rpf.bedgraph bedgraph treat
ribo-2 - ../ribo-2_minus.rpf.bedgraph bedgraph treat
Parameters¶
Required arguments¶
| Parameter | Default | Description |
|---|---|---|
-i, --family-table |
Clustered family table (*.family.message.txt). |
|
-M, --family-members |
Family members table (*.family.members.txt). |
|
--orf-source |
Full scanner message table used by smorf_cluster. |
|
-G, --orf-genepred |
Complete ORF genePred from smorf_scanner. |
|
-l, --density-list |
Density design file. | |
-o, --output |
Output prefix. |
Evidence arguments¶
| Parameter | Default | Description |
|---|---|---|
--evidence-mode |
manual |
canonical: calibrate sample-specific thresholds from annotated-ORF controls; manual: use the manual balanced thresholds. |
--group |
group |
Density-list column containing biological replicate groups. |
--reliable-sample |
2 |
Minimum number of independent samples supporting a reliable family. |
Manual evidence thresholds¶
Used by --evidence-mode manual:
| Parameter | Default | Description |
|---|---|---|
--min-rpf-sum |
5.0 |
Minimum whole-region P-site count. |
--min-rpf-per-codon |
0.10 |
Minimum P-sites per codon. |
--min-covered-codon |
3 |
Minimum covered codons. |
--min-codon-coverage |
0.10 |
Minimum covered-codon fraction. |
--moderate-periodicity |
0.50 |
Frame-0 fraction for moderate evidence. |
--strong-periodicity |
0.60 |
Frame-0 fraction for strong evidence. |
--min-window-rpf |
3.0 |
Minimum sliding-window P-site count. |
--min-window-covered-codon |
3 |
Minimum covered codons per window. |
Calibration arguments (canonical mode, hidden)¶
| Parameter | Default | Description |
|---|---|---|
--positive-quantile |
0.20 |
Lower-expression quantile of annotated-ORF controls used to derive thresholds. |
--positive-min-controls |
30 |
Minimum annotated-ORF controls required; the run fails below this. |
--positive-max-controls |
5000 |
Maximum annotated-ORF controls used. |
Runtime arguments¶
| Parameter | Default | Description |
|---|---|---|
-t, --thread |
1 |
Requested chromosome workers. The engine may reduce this value (up to 8) and always falls back to a single worker for small inputs. |
Output files¶
With -o gmx4.smorf four files are written:
| File | Description |
|---|---|
<prefix>.smorf_evidence.txt |
Master family-level evidence table (one row per family). |
<prefix>.reliable_smorf.txt |
Reliable smORF table (one row per reliable ORF). |
<prefix>.reliable_smorf.genepred |
genePred annotation of the reliable smORFs (ORF ids in column 1). |
<prefix>.evidence_summary.txt |
metric / value statistics. |
Master evidence table (smorf_evidence.txt)¶
Column groups:
| Group | Columns |
|---|---|
| Family identity | family_id, gene_id, chrom, strand, category, family_type, family_size |
| Primary-ORF chain | structural_primary, common_body_orf, provisional_primary, quant_primary, evidence_primary |
| Translation unit | translation_unit_id, translation_unit_index, translation_unit_count, translation_unit_status |
| Evidence status | evidence_status, family_translation_status, translated_extent_status, extent_supported_sample_count, extent_supporting_samples, extent_supported_bins, extension_rpf_sum, extension_frame0_ratio, family_translation_evidence, reliability_reason |
| Start site | start_site_status, start_site_reason, start_interval_orf_ids, selection_policy, selection_reason, canonical_anchor_orf, longest_candidate_orf, prior_override_status, leading_support_sample_count, leading_negative_sample_count, noncanonical_extension_support_sample_count, noncanonical_extension_density_ratio |
| Pooled signal | pooled_extent_rpf_sum, pooled_extent_frame0_ratio, pooled_start_rpf_sum, pooled_end_rpf_sum, pooled_extent_sample_count |
| Nested competition | nested_competition_status, dominant_parent_orf, competition_overlap_fraction, competition_frame_relation, competition_reason, frame_margin |
| Replication | reliable_group, supported_sample_count, max_group_sample_support, high_confidence_sample_count, supporting_group_count, supporting_groups, supporting_samples |
| Best sample | best_sample, best_sample_evidence, best_rpf_sum, best_rpf_per_codon, best_covered_codon, best_coverage_ratio, best_frame0_ratio, best_supported_windows, best_distributed_windows, best_signal_span, best_top_window_fraction, best_localized_only |
| Members | representative_count, representative_orf_ids, representative_start_codons |
| Candidate audit | invalid_family_reason, complete_candidate_count, complete_candidate_orf_ids, candidate_audit_status, candidate_failure_reasons |
| Phase audit | pooled_frame0_density, pooled_frame1_density, pooled_frame2_density, pooled_dominant_frame, suggested_psite_shift_nt, phase_audit_status |
Reliable smORF table (reliable_smorf.txt)¶
A focused view of the master table with one row per reliable ORF. It keeps the primary-chain and evidence columns and adds ORF coordinates: transcript_id, start_codon, stop_codon, nt_length, aa_length, exon_starts, exon_ends.
genePred output¶
Column 1 is the ORF id; the rest follows genePred conventions with cmpl/cmpl coding status for reliable smORFs.
Evidence classification¶
Per-sample evidence levels¶
| Level | Description |
|---|---|
NoEvidence |
No common-body P-site signal in the sample (zero_common_body_rpf). |
LowConfidence |
Signal present but failing a calibrated threshold: abundance_or_coverage_below_threshold, periodicity_below_calibrated_threshold, localized_only_long_orf_signal, or whole_orf_distribution_not_supported. |
MediumConfidence |
moderate_common_body_evidence. |
HighConfidence |
strong_replicable_common_body_evidence. |
InvalidFamilyGeometry |
The family failed geometry validation and is excluded. |
Family translation status¶
family_translation_status (and evidence_status) is one of:
Reliable— candidate-first distributed extent evidence, or Medium/High common-body evidence in at least--reliable-sampleindependent samples.Uncertain— signal without sufficient independent-sample replication, localized long-ORF signal, or invalid family geometry.NoEvidence— no common-body P-site signal in any sample.
reliability_reason¶
The reliability_reason column describes how a family was classified:
common_body_supported_by_N_independent_samples_across_M_groupsdistributed_long_ORF_extent_supported_by_N_independent_samplesdistributed_long_ORF_extent_compatible_by_N_independent_samplesinsufficient_independent_sample_replicationsignal_present_but_no_sample_passed_translation_thresholdsno_common_body_p_site_signal_in_any_samplefamily_geometry_validation_failed
Reliable smORF definition¶
A reliable smORF requires a reliable family with a supported or prior-compatible translated extent, a quant_primary, and no dominant ORF within the same transcript translation unit.
Calibration (canonical mode)¶
- Annotated-ORF families are used as positive controls (between
--positive-min-controlsand--positive-max-controls). - For every sample, the lower-expression quantile (
--positive-quantile, default0.20) of the control distribution is used to derive the abundance, coverage and window thresholds. - Frame-periodicity thresholds are derived from the controls and constrained to
[0.40, 0.85](moderate) and[moderate + 0.05, 0.95](strong). - The short/long ORF length split (
short_max_codons,long_min_codons) is estimated from the per-category (uORF/dORF/lncORF) length distributions (floored at 20/90 codons), and sliding-window parameters are derived from the controls as well. - The run fails if fewer than
--positive-min-controlsannotated-ORF controls are available; keepannotated_ORFinsmorf_cluster --keep-categoriesor switch to--evidence-mode manual.
Examples¶
cd ./sce/5.smorf/03.evidence
smorf_evidence \
-i ../02.smorf_cluster/gmx4.reliable.family.message.txt \
-M ../02.smorf_cluster/gmx4.reliable.family.members.txt \
--orf-source ../01.smorf_scan/gmx4.message.txt \
--orf-genepred ../01.smorf_scan/gmx4.genePred \
--density-list ribo.bedgraph.list \
--evidence-mode canonical \
--positive-quantile 0.20 \
--positive-min-controls 100 \
--positive-max-controls 5000 \
--reliable-sample 1 \
--thread 24 \
-o gmx4.smorf
Real run on soybean gmx4 (16 samples, 8 replicate groups):
- 1,051,931 families evaluated → 145,167 reliable families (69,641 reliable smORFs), 252,833 uncertain, 653,931 no-evidence.
- 7,146 families failed geometry validation; 37,256 annotated-ORF controls were excluded from the reliable-smORF export.
- Calibration derived
window_codons=12,window_step_codons=3,short_max_codons=20,long_min_codons=90. - The annotated-ORF phase audit suggested a systematic +1 nt P-site shift in 9,766 controls and printed a warning to verify the upstream P-site offset.
Excerpt of the generated evidence_summary.txt:
metric value
sample_count 16
effective_workers 8
total_families 1051931
reliable_families 145167
uncertain_families 252833
no_evidence_families 653931
reliable_smorfs 69641
invalid_families 7146
reliable_genepred_records 69641
annotated_controls_excluded_from_reliable_smorf 37256
reliable_family_definition Candidate-first distributed extent evidence or Medium/High common-body evidence in at least 1 independent samples
reliable_smorf_definition Reliable family with a supported or prior-compatible translated extent, a quant_primary, and no dominant ORF within the same transcript translation unit
uncertain_definition Signal without sufficient independent-sample replication, localized long-ORF signal, or invalid family geometry
evidence_mode canonical
group_column group
reliable_sample 1
...
best_sample_evidence_HighConfidence 72670
best_sample_evidence_MediumConfidence 35395
best_sample_evidence_LowConfidence 224156
best_sample_evidence_NoEvidence 712564
best_sample_evidence_InvalidFamilyGeometry 7146
phase_audit_Frame0Consistent 98108
phase_audit_AlternativeFrameDominant 184252
phase_audit_AmbiguousFrame 98625
phase_audit_NoSignal 663800
annotated_control_suggested_psite_shift_+1_nt 9766
reliability_reason_common_body_supported_by_1_independent_samples_across_1_groups 37009
reliability_reason_insufficient_independent_sample_replication 192176
reliability_reason_no_common_body_p_site_signal_in_any_sample 653931
reliability_reason_signal_present_but_no_sample_passed_translation_thresholds 53511
Notes¶
- All four upstream inputs are required and must be consistent: the family tables, the scanner message table, and the scanner genePred must originate from the same
smorf_scanner/smorf_clusterrun. - In
canonicalmode keepannotated_ORFinsmorf_cluster --keep-categories, otherwise calibration cannot find positive controls. - Strand-specific P-site bedGraph tracks can be generated by
rpf_Bam2bwand listed one row per sample per strand. - The annotated-ORF phase audit compares the dominant frame of controls against frame 0. A systematic alternative frame (many controls sharing the same suggested P-site shift) triggers a warning; verify the upstream P-site offset before interpreting candidate reading frames.
- The engine caps chromosome workers at 8 regardless of
--thread. - The master evidence table is large (one row per family); use
reliable_smorf.txtfor downstream prioritization.