soma-schema 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,165 @@
1
+ # DataHarmonizer build artifacts
2
+ node_modules/
3
+ dist/
4
+ docs/harmonizer.html
5
+ docs/schemas/
6
+ docs/menu.json
7
+ docs/assets/
8
+
9
+ # generated part of documentation
10
+ /docs/elements/*.md
11
+ /docs/artifacts/
12
+ /docs/examples/
13
+ /docs/schema/
14
+
15
+ # docs copied from src/docs by justfile _copy-docs
16
+ /docs/about.md
17
+ /docs/artifacts.md
18
+ /docs/examples.md
19
+ /docs/index.md
20
+ # linkml-run-examples output (not useful to have in git in its current form)
21
+ /examples/output/
22
+
23
+ # Derived schemas, generated from the schema.yaml
24
+ tmp/
25
+ project/*
26
+ !project/README.md
27
+ !project/excel/
28
+ !project/sqlschema/
29
+ !project/jsonschema/
30
+ !project/owl/
31
+
32
+ # Byte-compiled / optimized / DLL files
33
+ __pycache__/
34
+ *.py[cod]
35
+ *$py.class
36
+
37
+ # C extensions
38
+ *.so
39
+
40
+ # Distribution / packaging
41
+ .Python
42
+ build/
43
+ develop-eggs/
44
+ dist/
45
+ downloads/
46
+ eggs/
47
+ .eggs/
48
+ lib/
49
+ lib64/
50
+ parts/
51
+ sdist/
52
+ var/
53
+ wheels/
54
+ pip-wheel-metadata/
55
+ share/python-wheels/
56
+ *.egg-info/
57
+ .installed.cfg
58
+ *.egg
59
+ MANIFEST
60
+
61
+ # PyInstaller
62
+ # Usually these files are written by a python script from a template
63
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
64
+ *.manifest
65
+ *.spec
66
+
67
+ # Installer logs
68
+ pip-log.txt
69
+ pip-delete-this-directory.txt
70
+
71
+ # Unit test / coverage reports
72
+ htmlcov/
73
+ .tox/
74
+ .nox/
75
+ .coverage
76
+ .coverage.*
77
+ .cache
78
+ nosetests.xml
79
+ coverage.xml
80
+ *.cover
81
+ *.py,cover
82
+ .hypothesis/
83
+ .pytest_cache/
84
+
85
+ # Translations
86
+ *.mo
87
+ *.pot
88
+
89
+ # Django stuff:
90
+ *.log
91
+ local_settings.py
92
+ db.sqlite3
93
+ db.sqlite3-journal
94
+
95
+ # Flask stuff:
96
+ instance/
97
+ .webassets-cache
98
+
99
+ # Scrapy stuff:
100
+ .scrapy
101
+
102
+ # Sphinx documentation
103
+ docs/_build/
104
+
105
+ # PyBuilder
106
+ target/
107
+
108
+ # Jupyter Notebook
109
+ .ipynb_checkpoints
110
+
111
+ # IPython
112
+ profile_default/
113
+ ipython_config.py
114
+
115
+ # pyenv
116
+ .python-version
117
+
118
+ # pipenv
119
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
120
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
121
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
122
+ # install all needed dependencies.
123
+ #Pipfile.lock
124
+
125
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
126
+ __pypackages__/
127
+
128
+ # Celery stuff
129
+ celerybeat-schedule
130
+ celerybeat.pid
131
+
132
+ # SageMath parsed files
133
+ *.sage.py
134
+
135
+ # Environments
136
+ .env
137
+ .venv
138
+ env/
139
+ venv/
140
+ ENV/
141
+ env.bak/
142
+ venv.bak/
143
+
144
+ # Spyder project settings
145
+ .spyderproject
146
+ .spyproject
147
+
148
+ # Rope project settings
149
+ .ropeproject
150
+
151
+ # mkdocs documentation
152
+ /site
153
+
154
+ # mypy
155
+ .mypy_cache/
156
+ .dmypy.json
157
+ dmypy.json
158
+
159
+ # Pyre type checker
160
+ .pyre/
161
+
162
+ # pycharm
163
+ .idea
164
+ # Local vscode editor config
165
+ .vscode
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2025 Sierra Moxon
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,109 @@
1
+ Metadata-Version: 2.5
2
+ Name: soma-schema
3
+ Version: 0.2.2
4
+ Summary: This is the project description.
5
+ Author-email: Sierra Moxon <smoxon@lbl.gov>
6
+ License-Expression: MIT
7
+ License-File: LICENSE
8
+ Requires-Python: <4.0,>=3.9
9
+ Requires-Dist: linkml-runtime>=1.9.4
10
+ Description-Content-Type: text/markdown
11
+
12
+ <p align="center">
13
+ <img src="src/docs/soma-logo.svg" alt="SOMA Logo" width="700">
14
+ </p>
15
+
16
+ <p align="center">
17
+ A <a href="https://linkml.io/">LinkML</a> schema for representing Key Event and Outcome measurements, assays, and experimental protocols in the context of environmental health sciences (EHS) outcomes research.
18
+ </p>
19
+
20
+ <p align="center">
21
+ <a href="https://EHS-Data-Standards.github.io/soma"><strong>Documentation</strong></a> &middot;
22
+ <a href="https://EHS-Data-Standards.github.io/soma/elements/"><strong>Schema</strong></a> &middot;
23
+ <a href="https://EHS-Data-Standards.github.io/soma/examples.html"><strong>Examples</strong></a> &middot;
24
+ <a href="https://EHS-Data-Standards.github.io/soma/artifacts.html"><strong>Artifacts</strong></a>
25
+ </p>
26
+
27
+ ---
28
+
29
+ ## Purpose
30
+
31
+ This data model provides a standardized way to capture and exchange data about airway biology
32
+ assays relevant to respiratory health outcomes, including:
33
+
34
+ - **Ciliary function** - Beat frequency, active area, morphology
35
+ - **Airway surface liquid** - ASL height, periciliary layer depth, ion composition
36
+ - **Mucociliary clearance** - Transport rates, directionality, clearance efficiency
37
+ - **Oxidative stress** - ROS, lipid peroxidation, antioxidant capacity
38
+ - **Ion channel function** - CFTR chloride secretion, sweat chloride
39
+ - **Signaling pathways** - EGFR phosphorylation, downstream kinases
40
+ - **Mucin biology** - Goblet cells, MUC5AC/MUC5B expression
41
+ - **Inflammatory markers** - BALF/sputum cell counts, cytokines
42
+ - **Lung function** - Spirometry outcomes (FEV1, FVC)
43
+ - **Gene expression** - Target gene mRNA levels
44
+
45
+ ## Key Features
46
+
47
+ - **Assay-centric architecture** with domain-specific assay classes using named measurement slots
48
+ - **StudySubject hierarchy** for describing biological systems: cell cultures, human/animal subjects, populations
49
+ - **Typed protocol hierarchy**: ImagingProtocol, MolecularAssayProtocol, StainingProtocol, SpirometryProtocol
50
+ - **AOP Framework integration**: KeyEvent and AdverseOutcomePathway classes with assay linkage
51
+ - **Ontology-backed** entities mapped to GO, ChEBI, CL, UO, OBI, and other biomedical ontologies
52
+
53
+ ## Getting Started
54
+
55
+ The schema can be used to:
56
+
57
+ 1. **Validate data** - Ensure your data conforms to the model
58
+ 2. **Generate code** - Create Python dataclasses, Pydantic models, JSON Schema
59
+ 3. **Transform data** - Convert between JSON, YAML, RDF, and other formats
60
+
61
+ ## Development Workflow
62
+
63
+ For local development, use `uv` and `just` as the canonical entry points.
64
+ The repository may contain underlying Python, npm, and LinkML commands, but contributors
65
+ should treat the `just` recipes as the supported interface for routine setup, testing,
66
+ and generation tasks.
67
+
68
+ ### Prerequisites
69
+
70
+ - `uv` for Python environment and dependency management
71
+ - `just` for repository task automation
72
+ - `node` and `npm` for DataHarmonizer frontend builds
73
+
74
+ ### Setup
75
+
76
+ Install the Python dependencies managed by the repo:
77
+
78
+ ```bash
79
+ just install
80
+ ```
81
+
82
+ ### Common Commands
83
+
84
+ - Run the full validation workflow: `just test`
85
+ - Regenerate project artifacts: `just gen-project`
86
+ - Regenerate schema documentation: `just gen-doc`
87
+ - Build the DataHarmonizer assets: `just build-dh`
88
+ - List all available recipes: `just --list`
89
+
90
+ If you need to run a Python tool directly, prefer `uv run ...` so it executes inside the
91
+ managed project environment.
92
+
93
+ ## Repository Structure
94
+
95
+ * [docs/](docs/) - mkdocs-managed documentation
96
+ * [examples/](examples/) - Examples of using the schema
97
+ * [project/](project/) - project files (auto-generated, do not edit)
98
+ * [src/soma/schema/](src/soma/schema) - LinkML schema (edit this)
99
+ * [src/soma/datamodel/](src/soma/datamodel) - generated Python datamodel
100
+ * [tests/](tests/) - Python tests
101
+
102
+ ## Developer Tools
103
+
104
+ There are several pre-defined command-recipes available.
105
+ They are written for the command runner [just](https://github.com/casey/just/). To list all pre-defined commands, run `just` or `just --list`.
106
+
107
+ ## Credits
108
+
109
+ This project uses the template [linkml-project-copier](https://github.com/dalito/linkml-project-copier) published as [doi:10.5281/zenodo.15163584](https://doi.org/10.5281/zenodo.15163584).
@@ -0,0 +1,98 @@
1
+ <p align="center">
2
+ <img src="src/docs/soma-logo.svg" alt="SOMA Logo" width="700">
3
+ </p>
4
+
5
+ <p align="center">
6
+ A <a href="https://linkml.io/">LinkML</a> schema for representing Key Event and Outcome measurements, assays, and experimental protocols in the context of environmental health sciences (EHS) outcomes research.
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://EHS-Data-Standards.github.io/soma"><strong>Documentation</strong></a> &middot;
11
+ <a href="https://EHS-Data-Standards.github.io/soma/elements/"><strong>Schema</strong></a> &middot;
12
+ <a href="https://EHS-Data-Standards.github.io/soma/examples.html"><strong>Examples</strong></a> &middot;
13
+ <a href="https://EHS-Data-Standards.github.io/soma/artifacts.html"><strong>Artifacts</strong></a>
14
+ </p>
15
+
16
+ ---
17
+
18
+ ## Purpose
19
+
20
+ This data model provides a standardized way to capture and exchange data about airway biology
21
+ assays relevant to respiratory health outcomes, including:
22
+
23
+ - **Ciliary function** - Beat frequency, active area, morphology
24
+ - **Airway surface liquid** - ASL height, periciliary layer depth, ion composition
25
+ - **Mucociliary clearance** - Transport rates, directionality, clearance efficiency
26
+ - **Oxidative stress** - ROS, lipid peroxidation, antioxidant capacity
27
+ - **Ion channel function** - CFTR chloride secretion, sweat chloride
28
+ - **Signaling pathways** - EGFR phosphorylation, downstream kinases
29
+ - **Mucin biology** - Goblet cells, MUC5AC/MUC5B expression
30
+ - **Inflammatory markers** - BALF/sputum cell counts, cytokines
31
+ - **Lung function** - Spirometry outcomes (FEV1, FVC)
32
+ - **Gene expression** - Target gene mRNA levels
33
+
34
+ ## Key Features
35
+
36
+ - **Assay-centric architecture** with domain-specific assay classes using named measurement slots
37
+ - **StudySubject hierarchy** for describing biological systems: cell cultures, human/animal subjects, populations
38
+ - **Typed protocol hierarchy**: ImagingProtocol, MolecularAssayProtocol, StainingProtocol, SpirometryProtocol
39
+ - **AOP Framework integration**: KeyEvent and AdverseOutcomePathway classes with assay linkage
40
+ - **Ontology-backed** entities mapped to GO, ChEBI, CL, UO, OBI, and other biomedical ontologies
41
+
42
+ ## Getting Started
43
+
44
+ The schema can be used to:
45
+
46
+ 1. **Validate data** - Ensure your data conforms to the model
47
+ 2. **Generate code** - Create Python dataclasses, Pydantic models, JSON Schema
48
+ 3. **Transform data** - Convert between JSON, YAML, RDF, and other formats
49
+
50
+ ## Development Workflow
51
+
52
+ For local development, use `uv` and `just` as the canonical entry points.
53
+ The repository may contain underlying Python, npm, and LinkML commands, but contributors
54
+ should treat the `just` recipes as the supported interface for routine setup, testing,
55
+ and generation tasks.
56
+
57
+ ### Prerequisites
58
+
59
+ - `uv` for Python environment and dependency management
60
+ - `just` for repository task automation
61
+ - `node` and `npm` for DataHarmonizer frontend builds
62
+
63
+ ### Setup
64
+
65
+ Install the Python dependencies managed by the repo:
66
+
67
+ ```bash
68
+ just install
69
+ ```
70
+
71
+ ### Common Commands
72
+
73
+ - Run the full validation workflow: `just test`
74
+ - Regenerate project artifacts: `just gen-project`
75
+ - Regenerate schema documentation: `just gen-doc`
76
+ - Build the DataHarmonizer assets: `just build-dh`
77
+ - List all available recipes: `just --list`
78
+
79
+ If you need to run a Python tool directly, prefer `uv run ...` so it executes inside the
80
+ managed project environment.
81
+
82
+ ## Repository Structure
83
+
84
+ * [docs/](docs/) - mkdocs-managed documentation
85
+ * [examples/](examples/) - Examples of using the schema
86
+ * [project/](project/) - project files (auto-generated, do not edit)
87
+ * [src/soma/schema/](src/soma/schema) - LinkML schema (edit this)
88
+ * [src/soma/datamodel/](src/soma/datamodel) - generated Python datamodel
89
+ * [tests/](tests/) - Python tests
90
+
91
+ ## Developer Tools
92
+
93
+ There are several pre-defined command-recipes available.
94
+ They are written for the command runner [just](https://github.com/casey/just/). To list all pre-defined commands, run `just` or `just --list`.
95
+
96
+ ## Credits
97
+
98
+ This project uses the template [linkml-project-copier](https://github.com/dalito/linkml-project-copier) published as [doi:10.5281/zenodo.15163584](https://doi.org/10.5281/zenodo.15163584).
@@ -0,0 +1,81 @@
1
+ [build-system]
2
+ requires = ["hatchling", "uv-dynamic-versioning"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "soma-schema"
7
+ description = "This is the project description."
8
+ authors = [
9
+ {name = "Sierra Moxon", email = "smoxon@lbl.gov"},
10
+ ]
11
+ license = "MIT"
12
+ license-files = ["LICENSE"]
13
+ readme = "README.md"
14
+ requires-python = ">=3.9,<4.0"
15
+ dynamic = ["version"]
16
+
17
+ dependencies = [
18
+ "linkml-runtime >=1.9.4",
19
+ ]
20
+
21
+ [dependency-groups]
22
+ dev = [
23
+ "linkml>=1.9.3",
24
+ "mkdocs-material>=8.2.8",
25
+ "mkdocs-mermaid2-plugin>=1.1.1",
26
+ "jupyter>=1.0.0",
27
+ "mknotebooks>= 0.8.0",
28
+ "oaklib>=0.6.0",
29
+ ]
30
+
31
+ # See https://hatch.pypa.io/latest/config/build/#file-selection for how to
32
+ # explicitly include files other than default into the build distributions.
33
+
34
+ [tool.hatch.build.targets.sdist]
35
+ # Without this, hatchling packs the whole repo (200+ MB of example PDFs)
36
+ # and the upload exceeds PyPI's 100 MB file limit.
37
+ only-include = ["src"]
38
+
39
+ [tool.hatch.build.targets.wheel]
40
+ packages = ["src/soma"]
41
+
42
+ [tool.hatch.version]
43
+ source = "uv-dynamic-versioning"
44
+
45
+ # Ref.: https://github.com/ninoseki/uv-dynamic-versioning/
46
+ [tool.uv-dynamic-versioning]
47
+ vcs = "git"
48
+ style = "pep440"
49
+ fallback-version = "0.0.0"
50
+
51
+ # Ref.: https://docs.pytest.org/en/stable/reference/reference.html#configuration-options
52
+ [tool.pytest.ini_options]
53
+ testpaths = ["tests"]
54
+
55
+ # Ref.: https://github.com/codespell-project/codespell
56
+ [tool.codespell]
57
+ skip = [
58
+ "LICENSE",
59
+ "pyproject.toml",
60
+ "uv.lock",
61
+ "project/*",
62
+ "src/soma/datamodel/soma_pydantic.py",
63
+ "src/soma/datamodel/soma.py",
64
+ ]
65
+
66
+ # Reminder: words have to be lowercased for the ignore-words-list
67
+ ignore-words-list = "linke"
68
+ quiet-level = 3
69
+
70
+ # Ref.: https://github.com/crate-ci/typos (spell checker)
71
+ [tool.typos.default.extend-words]
72
+ linke = "linke"
73
+ [tool.typos.files]
74
+ extend-exclude = [
75
+ "LICENSE",
76
+ "uv.lock",
77
+ "pyproject.toml",
78
+ "project/*",
79
+ "src/soma/datamodel/soma_pydantic.py",
80
+ "src/soma/datamodel/soma.py",
81
+ ]
@@ -0,0 +1,119 @@
1
+ # About
2
+
3
+ ## The SOMA
4
+
5
+ The SOMA is part of the [EHS Data Standards](https://github.com/EHS-Data-Standards)
6
+ initiative, focused on developing standardized data models for environmental health sciences research.
7
+
8
+ ## Project Goals
9
+
10
+ This project aims to:
11
+
12
+ 1. **Standardize data representation** for exposure-outcome relationships in EHS research
13
+ 2. **Enable data interoperability** across studies, cohorts, and institutions
14
+ 3. **Support mechanistic understanding** through integration with Adverse Outcome Pathways (AOPs)
15
+ 4. **Bridge epidemiological and toxicological data** from human studies and model systems
16
+
17
+ ## The Data Model
18
+
19
+ ### Design Principles
20
+
21
+ The SOMA follows these principles:
22
+
23
+ - **Ontology-first** - All entities are mapped to established biomedical ontologies
24
+ - **FAIR-compliant** - Supports Findable, Accessible, Interoperable, and Reusable data
25
+ - **Extensible** - New assay types can be added without breaking existing data
26
+ - **Multi-scale** - Captures data from molecular to population levels
27
+
28
+ ### Technology Stack
29
+
30
+ The model is built using:
31
+
32
+ - [LinkML](https://linkml.io/) - Linked Data Modeling Language for schema definition
33
+ - [MkDocs](https://www.mkdocs.org/) with [Material theme](https://squidfunk.github.io/mkdocs-material/)
34
+ for documentation
35
+ - Python for data validation and transformation
36
+
37
+ ### Core Domains
38
+
39
+ | Domain | Description |
40
+ |--------|-------------|
41
+ | Assays | Domain-specific assay classes with named measurement slots (e.g., CiliaryFunctionAssay, LungFunctionAssay) |
42
+ | Study Subjects | Biological systems under study: cell cultures (CellularSystem), human/animal subjects (InVivoSubject), populations (PopulationSubject) |
43
+ | Protocols | Typed experimental procedures: ImagingProtocol, MolecularAssayProtocol, StainingProtocol, SpirometryProtocol |
44
+ | AOP Framework | Adverse Outcome Pathways: KeyEvent, AdverseOutcomePathway, with assay linkage via `informs_on_key_event` |
45
+
46
+ ## Contributing
47
+
48
+ We welcome contributions from the community. To contribute:
49
+
50
+ 1. Visit the [GitHub repository](https://github.com/EHS-Data-Standards/soma)
51
+ 2. Review the existing schema in `src/soma/schema/`
52
+ 3. Open an issue to discuss proposed changes
53
+ 4. Submit a pull request with your contributions
54
+
55
+ ## Development
56
+
57
+ For local development, use [uv](https://docs.astral.sh/uv/) and
58
+ [just](https://github.com/casey/just/) as the canonical entry points.
59
+ The repository may contain underlying Python, npm, and LinkML commands, but
60
+ contributors should treat the `just` recipes as the supported interface for
61
+ routine setup, testing, and generation tasks.
62
+
63
+ ### Prerequisites
64
+
65
+ - Python 3.10+
66
+ - [uv](https://docs.astral.sh/uv/) for Python environment and dependency management
67
+ - [just](https://github.com/casey/just/) for repository task automation
68
+ - `node` and `npm` for DataHarmonizer frontend builds
69
+
70
+ ### Setup
71
+
72
+ Install the Python dependencies managed by the repo:
73
+
74
+ ```bash
75
+ just install
76
+ ```
77
+
78
+ ### Common Commands
79
+
80
+ - Run the full validation workflow: `just test`
81
+ - Regenerate project artifacts: `just gen-project`
82
+ - Regenerate schema documentation: `just gen-doc`
83
+ - Build the DataHarmonizer assets: `just build-dh`
84
+ - Run the local documentation server: `just testdoc`
85
+ - List all available recipes: `just --list`
86
+
87
+ If you need to run a Python tool directly, prefer `uv run ...` so it executes
88
+ inside the managed project environment.
89
+
90
+ ### Project Structure
91
+
92
+ ```
93
+ soma/
94
+ ├── src/
95
+ │ ├── docs/ # Documentation source files
96
+ │ └── soma/
97
+ │ ├── schema/ # LinkML schema definition
98
+ │ └── datamodel/ # Generated Python models
99
+ ├── docs/
100
+ │ └── elements/ # Generated schema docs
101
+ ├── project/ # Generated artifacts
102
+ ├── tests/
103
+ │ └── data/ # Test data files
104
+ └── examples/ # Usage examples
105
+ ```
106
+
107
+ ## License
108
+
109
+ This project is released under the [MIT License](https://opensource.org/licenses/MIT).
110
+
111
+ ## Acknowledgments
112
+
113
+ This project uses the [linkml-project-copier](https://github.com/dalito/linkml-project-copier)
114
+ template for project structure and build tooling.
115
+
116
+ ## Contact
117
+
118
+ For questions or feedback, please open an issue on the
119
+ [GitHub repository](https://github.com/EHS-Data-Standards/soma/issues).
@@ -0,0 +1,39 @@
1
+ # Generated Artifacts
2
+
3
+ Download the generated model serializations:
4
+
5
+ - [JSON Schema](artifacts/soma.schema.json)
6
+ - [Pydantic Model](artifacts/soma_pydantic.py)
7
+ - [Python Dataclasses](artifacts/soma.py)
8
+ - [Excel Spreadsheet](artifacts/soma.xlsx)
9
+
10
+ ## Paper-Derived SOMA Data
11
+
12
+ SOMA-conformant data extracted from published PM2.5 research papers. Each workbook contains
13
+ assay measurements mapped to the SOMA schema with full provenance (figure/table references,
14
+ p-values, protocols, exposure conditions).
15
+
16
+ ### Montgomery et al. (2020)
17
+
18
+ **"Genome-Wide Analysis Reveals Mucociliary Remodeling of the Nasal Airway Epithelium Induced by Urban PM2.5"**
19
+
20
+ Am J Respir Cell Mol Biol. 2020;63(2):172-184 |
21
+ [Paper](https://academic.oup.com/ajrcmb/article/63/2/172/8461239) |
22
+ [PubMed Central](https://pmc.ncbi.nlm.nih.gov/articles/PMC7397762/) |
23
+ DOI: 10.1165/rcmb.2019-0454OC
24
+
25
+ - [Excel Workbook](artifacts/Montgomery2020_PM25_Mucociliary_SOMA.xlsx)
26
+ - SOMA assay types: GeneExpressionAssay, GobletCellAssay, FoxJExpressionAssay
27
+ - Key findings: CYP1A1 LFC=6.21 (AhR activation), MUC5AC+ cells FC=2.88, FOXJ1+ nuclei 75% decrease, 424 DEGs at moderate dose
28
+
29
+ ### Liu et al. (2024)
30
+
31
+ **"PM2.5 Exposure Inhibits Transepithelial Anion Short-circuit Current by Downregulating P2Y2 Receptor/CFTR Pathway"**
32
+
33
+ Int J Med Sci. 2024;21(10):1929-1944 |
34
+ [Paper](https://www.medsci.org/v21p1929.htm) |
35
+ DOI: 10.7150/ijms.96777
36
+
37
+ - [Excel Workbook](artifacts/Liu2024_PM25_CFTR_SOMA.xlsx)
38
+ - SOMA assay types: CFTRFunctionAssay, GeneExpressionAssay, GobletCellAssay, BALFSputumAssay, LungFunctionAssay
39
+ - Key findings: PM2.5 downregulates P2Y2R/CFTR (p<0.05), inhibits Isc, increases goblet cells (p<0.001), elevates Th2 cytokines