23 plant abiotic stress pack
Plant abiotic stress detection ships as an application pack (trait) on the existing
DNA-methylation process pack, demonstrating that the platform is species-agnostic.
The generic pattern is documented in
Methylation application packs. This instance
declares assay procedure plant_wgbs_gene_fc and extends the pattern with plant
platform unblockers because human blood/cfDNA defaults are biologically wrong for
plant WGBS: a plant_tissue analyte, a non-human site reference, a lifecycle program
without blood cell deconvolution, and a plant enrichment preset. It reuses SamplePrep,
the centroid → detector → mapper → Monte Carlo stability science, and samd_research.
There is no new aligner or workflow action.
For the shared per-sample and Monte Carlo topology, see the DNA methylation end-to-end workflow. Plant epigenomics background (CG/CHG/CHH contexts, stress biology, MSH1) is in Plant Research. This chapter covers only what is plant-specific.
Committed example: docs/examples/samd/plant-abiotic-stress/.
Why plants are different¶
Plant genomes methylate cytosines in three sequence contexts, each with distinct biology, so the pack runs all three and treats non-CG methylation as signal rather than a bisulfite-conversion artifact:
| Context | Maintained by | Meaning |
|---|---|---|
| CG | MET1 | Often stable, heritable epialleles |
| CHG | CMT3 | Chromatin / TE silencing |
| CHH | RdDM (24-nt siRNA) | Dynamic environmental (e.g. drought) response |
This is why the human WGBS defaults (which treat CHG/CHH methylation above ~2% as a conversion failure) must be lifted for plants.
Cohort design (binary Control vs Drought)¶
The study manifest expresses one control group and one stress group, giving a single comparison. Grafting / trait-introgression is a separate later pack, not this one.
flowchart TD
C["control.csv (well-watered)"] --> CMP{"comparisons control_vs_each_disease"}
D["drought.csv (stressed)"] --> CMP
CMP --> MC["MC stability per comparison CG / CHG / CHH"]
MC --> MODEL["freeze + model + holdout (samd_research)"]
Plant abiotic stress pack cohort flow
Manifest essentials (project_Control_vs_Drought.json):
{
"diseases": {
"label": "stress",
"groups": [{ "label": "drought", "sample_paths": ["data/drought.csv"] }]
},
"comparisons": "control_vs_each_disease",
"chromosomes": ["1", "2", "3", "4", "5"],
"contexts": ["CG", "CHG", "CHH"],
"regulatory": { "primary_modality": "methylation", "primary_analyte": "plant_tissue" }
}
primary_modality: methylation keeps this on the methylation process; primary_analyte:
plant_tissue selects the plant analyte profile (plant-safe QC, no cfDNA fragmentomics).
Arabidopsis chromosomes are 1..5; swap the list for other species.
Site reference (plant genome gate)¶
Plants align linear only (no HPRC pangenome). Pin a non-human genome + GTF in a site manifest and provision the assets once per cluster:
scripts/download_arabidopsis_tair10.sh
export METHYL_SITE_CONFIG=workflow_engine/domain/profiles/site_tair10.example.json
The committed example site_tair10.example.json
pins Arabidopsis_thaliana.TAIR10.dna.toplevel.fa and
Arabidopsis_thaliana.TAIR10.58.gtf under /work/genomes and omits the pangenome, RNA
and proteomics reference blocks. The genome site reference is the real deployment gate for
this pack, not new Python science.
Plant analyte overlay¶
Plant biology is expressed through the plant_tissue analyte defaults plus a small
instance/context overlay (context_plant_abiotic_stress.json):
| Key | Value | Why |
|---|---|---|
regulatory.primary_analyte |
plant_tissue |
Plant-safe QC: lifts CHG/CHH extraction caps, opens the bisulfite non-CpG cap, disables cfDNA fragmentomics (see ANALYTE_PROFILES) |
actionConfig.mapper.enrich_disease |
true |
Offline plant gene↔trait prior (enrich_source: plant_traits); not Open Targets |
actionConfig.mapper.enrich_source |
plant_traits |
Human Open Targets / DisGeNET stay off; join an operator TSV |
actionConfig.mapper.plant_traits_path |
demo drought TSV | Seed table under the example pack; replace with SoyBase / MaizeGDB / Gramene extracts for crops |
actionConfig.enricher.library_preset |
"plant-stress-core" |
Organism-general GO terms; drops human oncology/CNS libraries |
actionConfig.enricher.organism |
"Arabidopsis_thaliana" |
Enrichr organism |
actionConfig.enricher.string_species |
3702 |
STRING PPI taxon (Arabidopsis; 3847 soybean) |
runProgressionAnalysis |
false |
Binary study, no ordered stages |
Human-symbol Enrichr libraries do not map to Arabidopsis AGI locus IDs, so for true
Arabidopsis/crop term enrichment supply a custom plant GMT via
actionConfig.enricher.libraries; plant-stress-core is the discovery default. The
preset is a committed enrichment library preset synced like the action catalog:
methyl-cfg sync-library-presets # registry -> cfg (kind enrichment_library_preset)
methyl-cfg materialize # -> /work/site/enrichment/*.json
Lifecycle program without cell deconvolution¶
The pack runs
plant_stress_study_lifecycle.program.json,
identical to the human study_validation_lifecycle except the pipeline.cell_deconvolution
node is removed (shipped deconvolution bases are human-blood only). Progression is
config-gated off for the binary study.
methyl-study-validate-manifest \
--project /work/projects/plant-abiotic-stress/configs/project_Control_vs_Drought.json \
--profile samd_research
methyl-workflow-run \
--program workflow_engine/domain/fixtures/plant_stress_study_lifecycle.program.json \
--context-file /work/projects/plant-abiotic-stress/configs/context_plant_abiotic_stress.json
Other crops (soybean, maize, wheat)¶
Committed site recipes and study stubs ship alongside Arabidopsis (same application pack, same lifecycle program):
| Crop | Site example | Download script | Manifest / overlay | STRING |
|---|---|---|---|---|
| Soybean Wm82 | site_glycine_max_wm82.example.json |
scripts/download_glycine_max_wm82.sh |
project_Control_vs_Drought_soybean.json + context_soybean_drought.json |
3847 |
| Maize B73 | site_zea_mays_b73.example.json |
scripts/download_zea_mays_b73.sh |
project_Control_vs_Drought_maize.json + context_maize_drought.json |
4577 |
| Wheat IWGSC | site_triticum_aestivum_iwgsc.example.json |
scripts/download_triticum_aestivum_iwgsc.sh |
project_Control_vs_Drought_wheat.json + context_wheat_drought.json |
4565 |
scripts/download_glycine_max_wm82.sh
export METHYL_SITE_CONFIG=workflow_engine/domain/profiles/site_glycine_max_wm82.example.json
methyl-workflow-run \
--program workflow_engine/domain/fixtures/plant_stress_study_lifecycle.program.json \
--context-file docs/examples/samd/plant-abiotic-stress/context_soybean_drought.json
Wheat assembly is large; operators may set a chromosome subset (e.g. ["1A"]) for research
runs. Pattern checklist: ch.24.
Plant cell-type deconvolution (optional)¶
Default lifecycle omits blood deconvolution. When a plant atlas is available:
- Provision Houseman or HiTIMED JSON under
/work(cfg roleshouseman_seed_basis/hitimed_hierarchy_basis; compose HiTIMED withscripts/build_plant_hitimed_basis.py). - Set site
actionConfig.cell_deconvolution(seed_basis_pathorhierarchy_basis_path, multi-context list).plant_tissuenever falls back to packaged blood atlases. - Run
plant_stress_study_lifecycle_with_deconv.program.json.
epi-GBS SamplePrep (optional)¶
WGBS stays on Parabricks sample_prep.program.json.
For epi-GBS set libraryProtocol: epi_gbs (see epi_gbs.profile.json) and run
sample_prep_epigbs.program.json:
optional sample.demultiplex → sample.docker_align → methyl QC/extract. Pin the Docker
image + argv in actionConfig.docker_align. Demux offline and set demultiplex.skip: true
when barcodes were already split. Details: plant-deconv-epigbs-seams plan.
What this pack does not add¶
- No Open Targets / DisGeNET priors (human therapeutic databases). Arabidopsis overlay
uses
enrich_source: plant_traitswithdata/arabidopsis_drought_gene_traits.tsv; crop overlays leave disease enrichment off until operators supply a crop gene↔trait table (SoyBase / MaizeGDB / WheatIS / Gramene / literature). - No grafting / trait-introgression design — that is a planned separate pack.
- No SaMD pivotal / clinical-performance claim ladder — an agricultural research pack
stays on
samd_research. - No biologically validated plant atlas in the wheel — operators supply atlas JSON.