# patrickjchoi/antitnf-biomarker-signature architecture

> Architecture diagram of the GitHub repository patrickjchoi/antitnf-biomarker-signature, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/patrickjchoi/antitnf-biomarker-signature
- Repository: https://github.com/patrickjchoi/antitnf-biomarker-signature

## Overview

This repository supports a transcriptomic research workflow: GEO cohort data are harmonized, evaluated for an anti-TNF response signature, checked in blood and an external biopsy cohort, and reported through saved results and manuscript figures. The README documents the main inputs, outputs, and analysis responsibilities; sampled excerpts do not establish every script-to-script dependency, so uncertain links are omitted.

Main entry points: [`Code/run_blood_ml_optimized.py`](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_blood_ml_optimized.py) (Blood negative control), [`Code/generate_all_preprint_figures.py`](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/generate_all_preprint_figures.py) (Figure generation), [`Code/run_batch_corrected_loocv.py`](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_batch_corrected_loocv.py) (Batch-corrected CV), [`Code/gse73661_analysis.py`](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/gse73661_analysis.py) (GSE73661 validation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_prep["Cohort preparation"]
  node_biopsy_harmonizer["Biopsy harmonization"]
  node_blood_harmonizer["Blood harmonization<br/>[harmonize_blood.py]"]
  node_biopsy_meta["Biopsy metadata"]
  node_blood_meta["Blood metadata"]
end

subgraph group_discovery["Signature discovery"]
  node_batch_cv["Batch-corrected CV"]
  node_batch_cv_result["Batch CV results"]
  node_batch_perm["Batch permutation test"]
  node_batch_perm_result["Batch permutation results"]
  node_lodo["Leave-one-dataset-out"]
  node_lodo_result["LODO results"]
  node_feature_analysis["Feature ranking"]
  node_feature_result["Feature rank results"]
  node_subgroup["Subgroup evaluation"]
  node_subgroup_result["Subgroup results"]
end

subgraph group_checks["Validation and controls"]
  node_blood_ml["Blood negative control"]
  node_blood_result["Blood ML results"]
  node_blood_perm_result["Blood permutation results"]
  node_external_validation["GSE73661 validation"]
  node_validation_result["Validation results"]
end

subgraph group_reporting["Research outputs"]
  node_figures["Figure generation"]
  node_results_figures["Generated figures"]
  node_manuscript["Research manuscript"]
end

node_researcher(("Researcher"))
node_geo[("NCBI GEO cohorts")]

node_researcher -->|"runs"| node_biopsy_harmonizer
node_researcher -->|"runs"| node_blood_harmonizer
node_geo -->|"provides cohorts"| node_biopsy_harmonizer
node_geo -->|"provides cohorts"| node_blood_harmonizer
node_biopsy_harmonizer -->|"writes metadata"| node_biopsy_meta
node_blood_harmonizer -->|"writes metadata"| node_blood_meta
node_researcher -->|"runs"| node_batch_cv
node_researcher -->|"runs"| node_batch_perm
node_researcher -->|"runs"| node_lodo
node_researcher -->|"runs"| node_feature_analysis
node_researcher -->|"runs"| node_subgroup
node_researcher -->|"runs"| node_blood_ml
node_researcher -->|"runs"| node_external_validation
node_batch_cv -->|"reads metadata"| node_biopsy_meta
node_batch_cv -->|"writes results"| node_batch_cv_result
node_batch_perm -->|"writes results"| node_batch_perm_result
node_lodo -->|"writes results"| node_lodo_result
node_feature_analysis -->|"writes results"| node_feature_result
node_subgroup -->|"writes results"| node_subgroup_result
node_blood_ml -->|"reads metadata"| node_blood_meta
node_blood_ml -->|"writes results"| node_blood_result
node_blood_ml -->|"writes results"| node_blood_perm_result
node_external_validation -->|"retrieves cohort"| node_geo
node_external_validation -->|"writes results"| node_validation_result
node_researcher -->|"runs"| node_figures
node_figures -->|"reads metrics"| node_batch_cv_result
node_figures -->|"reads results"| node_validation_result
node_figures -->|"writes figures"| node_results_figures
node_researcher -->|"consults"| node_manuscript

click node_biopsy_harmonizer "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/harmonize_biopsy.py"
click node_blood_harmonizer "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/harmonize_blood.py"
click node_biopsy_meta "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/harmonized_biopsy_metadata.pkl"
click node_blood_meta "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/harmonized_blood_metadata.pkl"
click node_batch_cv "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_batch_corrected_loocv.py"
click node_batch_cv_result "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/batch_corrected_loocv_results.pkl"
click node_batch_perm "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_batch_corrected_permutation.py"
click node_batch_perm_result "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/batch_corrected_permutation_results.pkl"
click node_lodo "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_batch_corrected_lodo.py"
click node_lodo_result "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/batch_corrected_lodo_pooled_results.pkl"
click node_feature_analysis "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/analyze_batch_corrected_features.py"
click node_feature_result "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/feature_rank_table_results.pkl"
click node_subgroup "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_subgroup_analysis_v2.py"
click node_subgroup_result "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/subgroup_analysis_v2_results.pkl"
click node_blood_ml "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_blood_ml_optimized.py"
click node_blood_result "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/blood_ml_full_results.pkl"
click node_blood_perm_result "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/blood_permutation_results.pkl"
click node_external_validation "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/gse73661_analysis.py"
click node_validation_result "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/gse73661_validation_results.pkl"
click node_figures "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/generate_all_preprint_figures.py"
click node_results_figures "https://github.com/patrickjchoi/antitnf-biomarker-signature/tree/main/Results"
click node_manuscript "https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Choi_Harmonized_AntiTNF_Biomarker_Manuscript.md"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_biopsy_harmonizer,node_blood_harmonizer,node_biopsy_meta,node_blood_meta toneBlue
class node_batch_cv,node_batch_cv_result,node_batch_perm,node_batch_perm_result,node_lodo,node_lodo_result,node_feature_analysis,node_feature_result,node_subgroup,node_subgroup_result,node_geo toneAmber
class node_blood_ml,node_blood_result,node_blood_perm_result,node_external_validation,node_validation_result toneMint
class node_figures,node_results_figures,node_manuscript toneRose
class node_researcher toneIndigo
```

## Components

### Cohort preparation

- [Biopsy harmonization](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/harmonize_biopsy.py): `Code/harmonize_biopsy.py`
- [Blood harmonization](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/harmonize_blood.py): `Code/harmonize_blood.py`
- [Biopsy metadata](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/harmonized_biopsy_metadata.pkl): `harmonized_biopsy_metadata.pkl`
- [Blood metadata](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/harmonized_blood_metadata.pkl): `harmonized_blood_metadata.pkl`

### Signature discovery

- [Batch-corrected CV](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_batch_corrected_loocv.py): `Code/run_batch_corrected_loocv.py`
- [Batch CV results](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/batch_corrected_loocv_results.pkl): `batch_corrected_loocv_results.pkl`
- [Batch permutation test](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_batch_corrected_permutation.py): `Code/run_batch_corrected_permutation.py`
- [Batch permutation results](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/batch_corrected_permutation_results.pkl): `batch_corrected_permutation_results.pkl`
- [Leave-one-dataset-out](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_batch_corrected_lodo.py): `Code/run_batch_corrected_lodo.py`
- [LODO results](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/batch_corrected_lodo_pooled_results.pkl): `batch_corrected_lodo_pooled_results.pkl`
- [Feature ranking](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/analyze_batch_corrected_features.py): `Code/analyze_batch_corrected_features.py`
- [Feature rank results](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/feature_rank_table_results.pkl): `feature_rank_table_results.pkl`
- [Subgroup evaluation](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_subgroup_analysis_v2.py): `Code/run_subgroup_analysis_v2.py`
- [Subgroup results](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/subgroup_analysis_v2_results.pkl): `subgroup_analysis_v2_results.pkl`

### Validation and controls

- [Blood negative control](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/run_blood_ml_optimized.py): `Code/run_blood_ml_optimized.py`
- [Blood ML results](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/blood_ml_full_results.pkl): `blood_ml_full_results.pkl`
- [Blood permutation results](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/blood_permutation_results.pkl): `blood_permutation_results.pkl`
- [GSE73661 validation](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/gse73661_analysis.py): `Code/gse73661_analysis.py`
- [Validation results](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/gse73661_validation_results.pkl): `gse73661_validation_results.pkl`

### Research outputs

- [Figure generation](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Code/generate_all_preprint_figures.py): `Code/generate_all_preprint_figures.py`
- [Generated figures](https://github.com/patrickjchoi/antitnf-biomarker-signature/tree/main/Results): `Results`
- [Research manuscript](https://github.com/patrickjchoi/antitnf-biomarker-signature/blob/main/Choi_Harmonized_AntiTNF_Biomarker_Manuscript.md): `Choi_Harmonized_AntiTNF_Biomarker_Manuscript.md`

### Other components

- **Researcher**
- **NCBI GEO cohorts**

## Connections

- Researcher → Biopsy harmonization: runs
- Researcher → Blood harmonization: runs
- NCBI GEO cohorts → Biopsy harmonization: provides cohorts
- NCBI GEO cohorts → Blood harmonization: provides cohorts
- Biopsy harmonization → Biopsy metadata: writes metadata
- Blood harmonization → Blood metadata: writes metadata
- Researcher → Batch-corrected CV: runs
- Researcher → Batch permutation test: runs
- Researcher → Leave-one-dataset-out: runs
- Researcher → Feature ranking: runs
- Researcher → Subgroup evaluation: runs
- Researcher → Blood negative control: runs
- Researcher → GSE73661 validation: runs
- Batch-corrected CV → Biopsy metadata: reads metadata
- Batch-corrected CV → Batch CV results: writes results
- Batch permutation test → Batch permutation results: writes results
- Leave-one-dataset-out → LODO results: writes results
- Feature ranking → Feature rank results: writes results
- Subgroup evaluation → Subgroup results: writes results
- Blood negative control → Blood metadata: reads metadata
- Blood negative control → Blood ML results: writes results
- Blood negative control → Blood permutation results: writes results
- GSE73661 validation → NCBI GEO cohorts: retrieves cohort
- GSE73661 validation → Validation results: writes results
- Researcher → Figure generation: runs
- Figure generation → Batch CV results: reads metrics
- Figure generation → Validation results: reads results
- Figure generation → Generated figures: writes figures
- Researcher → Research manuscript: consults
